From b278f27ffea00d5c6a2934407a1bb23e9f0f3bfe Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 8 Dec 2014 11:56:34 -0500 Subject: [PATCH] partial fix to #2509 --- public/src/ajaxify.js | 1 + src/middleware/middleware.js | 12 ++++++++++++ src/routes/index.js | 4 ++-- src/views/admin/settings/tags.tpl | 20 +++++++++++++++++--- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index a5cc3f0386..32f5a8bfbd 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -33,6 +33,7 @@ $(document).ready(function() { return renderTemplate(url, data.status.toString(), data.responseJSON, (new Date()).getTime(), callback); } else if (data.status === 401) { app.alertError('[[global:please_log_in]]'); + app.previousUrl = url; return ajaxify.go('login'); } else if (data.status === 302) { return ajaxify.go(data.responseJSON.slice(1), callback, quiet); diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index 4108cdecb4..facb0fc925 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -558,6 +558,18 @@ middleware.maintenanceMode = function(req, res, next) { } }; +middleware.publicTagListing = function(req, res, next) { + if ((!meta.config.hasOwnProperty('publicTagListing') || parseInt(meta.config.publicTagListing, 10) === 1)) { + next(); + } else { + if (res.locals.isAPI) { + res.sendStatus(401); + } else { + middleware.ensureLoggedIn(req, res, next); + } + } +} + module.exports = function(webserver) { app = webserver; middleware.admin = require('./admin')(webserver); diff --git a/src/routes/index.js b/src/routes/index.js index b2612d12ad..3d79b119c6 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -45,8 +45,8 @@ function topicRoutes(app, middleware, controllers) { } function tagRoutes(app, middleware, controllers) { - setupPageRoute(app, '/tags/:tag', middleware, [], controllers.tags.getTag); - setupPageRoute(app, '/tags', middleware, [], controllers.tags.getTags); + setupPageRoute(app, '/tags/:tag', middleware, [middleware.publicTagListing], controllers.tags.getTag); + setupPageRoute(app, '/tags', middleware, [middleware.publicTagListing], controllers.tags.getTags); } function categoryRoutes(app, middleware, controllers) { diff --git a/src/views/admin/settings/tags.tpl b/src/views/admin/settings/tags.tpl index fd941d7c82..9b7f190498 100644 --- a/src/views/admin/settings/tags.tpl +++ b/src/views/admin/settings/tags.tpl @@ -4,9 +4,23 @@
Tag Settings
- Tags per Topic

- Minimum Tag Length

- Maximum Tag Length

+
+ +
+
+ + +
+
+ + +
+
+ + +