Fix for #2686

Ylian Saint-Hilaire committed May 25, 2021 at 11:17 UTC b9f34381e9e21ef9f7e56e086af60af2bb440d49
3 files changed +12 -4
views/message.handlebars
+1 -1
@@ -76,7 +76,7 @@
76 case 10: { msg = "ERROR: Invalid account check, verification url is only valid for 30 minutes."; break; }
77 case 11: { msg = "Sharing link not valid yet."; break; }
78 case 12: { msg = "Sharing link is expired."; break; }
79 - case 13: { msg = "If you are an administrator, [login here].".replace('[', '<a href=login?admin=1>').replace(']', '</a>'); break; }
79 + case 13: { msg = "If you are an administrator, [login here].".replace('[', '<a href=login?loginscreen=1>').replace(']', '</a>'); break; }
80 case 14: { msg = '<a href=' + window.location.href + '&confirm=1>' + "Click here to reset your account password." + '</a>'; break; }
81 }
82
views/message2.handlebars
+1 -1
@@ -77,7 +77,7 @@
77 case 10: { msg = "ERROR: Invalid account check, verification url is only valid for 30 minutes."; break; }
78 case 11: { msg = "Sharing link not valid yet."; break; }
79 case 12: { msg = "Sharing link is expired."; break; }
80 - case 13: { msg = "If you are an administrator, [login here].".replace('[', '<a href=?admin=1>').replace(']', '</a>'); break; }
80 + case 13: { msg = "If you are an administrator, [login here].".replace('[', '<a href=?loginscreen=1>').replace(']', '</a>'); break; }
81 case 14: { msg = '<a href=' + window.location.href + '&confirm=1>' + "Click here to reset your account password." + '</a>'; break; }
82 }
83
webserver.js
+10 -2
@@ -1841,7 +1841,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1841 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
1842
1843 // Check if we are in maintenance mode
1844 - if ((parent.config.settings.maintenancemode != null) && (req.query.admin !== '1')) {
1844 + if ((parent.config.settings.maintenancemode != null) && (req.query.loginscreen !== '1')) {
1845 render(req, res, getRenderPage((domain.sitestyle == 2) ? 'message2' : 'message', req, domain), getRenderArgs({ titleid: 3, msgid: 13, domainurl: encodeURIComponent(domain.url).replace(/'/g, '%27') }, req, domain));
1846 return;
1847 }
@@ -2391,7 +2391,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2391 if ((req.session != null) && (typeof req.session.expire == 'number') && ((req.session.expire - Date.now()) <= 0)) { for (var i in req.session) { delete req.session[i]; } }
2392
2393 // Check if we are in maintenance mode
2394 - if ((parent.config.settings.maintenancemode != null) && (req.query.admin !== '1')) {
2394 + if ((parent.config.settings.maintenancemode != null) && (req.query.loginscreen !== '1')) {
2395 parent.debug('web', 'handleLoginRequest: Server under maintenance.');
2396 render(req, res, getRenderPage((domain.sitestyle == 2) ? 'message2' : 'message', req, domain), getRenderArgs({ titleid: 3, msgid: 13, domainurl: encodeURIComponent(domain.url).replace(/'/g, '%27') }, req, domain));
2397 return;
@@ -2552,6 +2552,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2552 if (req.session && req.session.userid && obj.users[req.session.userid]) {
2553 const user = obj.users[req.session.userid];
2554
2555 + // Check if we are in maintenance mode
2556 + if ((parent.config.settings.maintenancemode != null) && (user.siteadmin != 4294967295)) {
2557 + req.session.messageid = 115; // Server under maintenance
2558 + req.session.loginmode = 1;
2559 + res.redirect(domain.url);
2560 + return;
2561 + }
2562 +
2563 // If the request has a "meshmessengerid", redirect to MeshMessenger
2564 // This situation happens when you get a push notification for a chat session, but are not logged in.
2565 if (req.query.meshmessengerid != null) {