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) {