From 57069a5c489101dee1e9171da56946cf8ecf9455 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 18 Feb 2019 15:33:49 -0500 Subject: [PATCH] fix: #7385 better handling for errors in Adv>Databases --- .../language/en-GB/admin/advanced/database.json | 1 + src/controllers/admin/database.js | 17 ++++++++++++----- src/views/admin/advanced/database.tpl | 7 +++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/public/language/en-GB/admin/advanced/database.json b/public/language/en-GB/admin/advanced/database.json index 9fccd39b48..9167b381ed 100644 --- a/public/language/en-GB/admin/advanced/database.json +++ b/public/language/en-GB/admin/advanced/database.json @@ -22,6 +22,7 @@ "mongo.bytes-out": "Bytes Out", "mongo.num-requests": "Number of Requests", "mongo.raw-info": "MongoDB Raw Info", + "mongo.unauthorized": "NodeBB was unable to query the MongoDB database for relevant statistics. Please ensure that the user in use by NodeBB contains the "clusterMonitor" role for the "admin" database.", "redis": "Redis", "redis.version": "Redis Version", diff --git a/src/controllers/admin/database.js b/src/controllers/admin/database.js index 147747822c..a67ccd5aa4 100644 --- a/src/controllers/admin/database.js +++ b/src/controllers/admin/database.js @@ -5,7 +5,7 @@ var nconf = require('nconf'); var databaseController = module.exports; -databaseController.get = function (req, res, next) { +databaseController.get = function (req, res) { async.waterfall([ function (next) { async.parallel({ @@ -35,8 +35,15 @@ databaseController.get = function (req, res, next) { }, }, next); }, - function (results) { - res.render('admin/advanced/database', results); - }, - ], next); + ], function (err, results) { + Object.assign(results, { error: err }); + + // Override mongo error with more human-readable error + if (err.name === 'MongoError' && err.codeName === 'Unauthorized') { + err.friendlyMessage = '[[admin/advanced/database:mongo.unauthorized]]'; + delete results.mongo; + } + + res.render('admin/advanced/database', results); + }); }; diff --git a/src/views/admin/advanced/database.tpl b/src/views/admin/advanced/database.tpl index 086b24e179..3e6a6b541e 100644 --- a/src/views/admin/advanced/database.tpl +++ b/src/views/admin/advanced/database.tpl @@ -1,5 +1,12 @@
+ +
+ {error.friendlyMessage} +
+ {error.errmsg} +
+
[[admin/advanced/database:mongo]]