diff --git a/public/language/en-GB/admin/settings/user.json b/public/language/en-GB/admin/settings/user.json index a8bc2b176e99..cbdd4ee91cb6 100644 --- a/public/language/en-GB/admin/settings/user.json +++ b/public/language/en-GB/admin/settings/user.json @@ -19,6 +19,8 @@ "themes": "Themes", "disable-user-skins": "Prevent users from choosing a custom skin", "account-protection": "Account Protection", + "admin-relogin-duration": "Admin relogin duration (minutes)", + "admin-relogin-duration-help": "After a set amount of time accessing the admin section will require re-login, set to 0 to disable", "login-attempts": "Login attempts per hour", "login-attempts-help": "If login attempts to a user's account exceeds this threshold, that account will be locked for a pre-configured amount of time", "lockout-duration": "Account Lockout Duration (minutes)", diff --git a/src/middleware/user.js b/src/middleware/user.js index 3c59bd8923f0..d7b70377f654 100644 --- a/src/middleware/user.js +++ b/src/middleware/user.js @@ -173,10 +173,12 @@ module.exports = function (middleware) { } var loginTime = req.session.meta ? req.session.meta.datetime : 0; - if (loginTime && parseInt(loginTime, 10) > Date.now() - 3600000) { - var timeLeft = parseInt(loginTime, 10) - (Date.now() - 3600000); - if (timeLeft < 300000) { - req.session.meta.datetime += 300000; + var adminReloginDuration = (meta.config.adminReloginDuration || 60) * 60000; + var disabled = parseInt(meta.config.adminReloginDuration, 10) === 0; + if (disabled || (loginTime && parseInt(loginTime, 10) > Date.now() - adminReloginDuration)) { + var timeLeft = parseInt(loginTime, 10) - (Date.now() - adminReloginDuration); + if (timeLeft < Math.min(300000, adminReloginDuration)) { + req.session.meta.datetime += Math.min(300000, adminReloginDuration); } return next(); diff --git a/src/views/admin/settings/user.tpl b/src/views/admin/settings/user.tpl index 9d933b54e1ac..1d2042e97dec 100644 --- a/src/views/admin/settings/user.tpl +++ b/src/views/admin/settings/user.tpl @@ -105,6 +105,13 @@
[[admin/settings/user:account-protection]]
+
+ + +

+ [[admin/settings/user:admin-relogin-duration-help]] +

+