Logout users without 2FA when mandatory 2fa is enabled

Fixes #803
This commit is contained in:
Girish Ramakrishnan
2021-09-17 14:32:13 -07:00
parent e8aaad976b
commit 66a907ef48
5 changed files with 73 additions and 4 deletions

View File

@@ -138,8 +138,9 @@ const assert = require('assert'),
paths = require('./paths.js'),
safe = require('safetydance'),
sysinfo = require('./sysinfo.js'),
tokens = require('./tokens.js'),
translation = require('./translation.js'),
util = require('util'),
users = require('./users.js'),
_ = require('underscore');
const SETTINGS_FIELDS = [ 'name', 'value' ].join(',');
@@ -535,7 +536,18 @@ async function setDirectoryConfig(directoryConfig) {
if (isDemo()) throw new BoxError(BoxError.BAD_FIELD, 'Not allowed in demo mode');
const oldConfig = await getDirectoryConfig();
await set(exports.DIRECTORY_CONFIG_KEY, JSON.stringify(directoryConfig));
if (directoryConfig.mandatory2FA && !oldConfig.mandatory2FA) {
debug('setDirectoryConfig: logging out non-2FA users to enforce 2FA');
const allUsers = await users.list();
for (const user of allUsers) {
if (!user.twoFactorAuthenticationEnabled) await tokens.delByUserIdAndType(user.id, tokens.ID_WEBADMIN);
}
}
notifyChange(exports.DIRECTORY_CONFIG_KEY, directoryConfig);
}