split routes and model code into user-directory.js

This commit is contained in:
Girish Ramakrishnan
2024-06-12 10:27:59 +02:00
parent e1f87161a8
commit b4e7e394c3
10 changed files with 121 additions and 80 deletions

View File

@@ -51,9 +51,6 @@ exports = module.exports = {
getBackgroundImage,
setBackgroundImage,
getProfileConfig,
setProfileConfig,
resetSource,
parseDisplayName,
@@ -91,15 +88,15 @@ const appPasswords = require('./apppasswords.js'),
mail = require('./mail.js'),
mailer = require('./mailer.js'),
mysql = require('mysql'),
oidc = require('../oidc.js'),
qrcode = require('qrcode'),
safe = require('safetydance'),
settings = require('./settings.js'),
speakeasy = require('speakeasy'),
tokens = require('./tokens.js'),
translation = require('./translation.js'),
uuid = require('uuid'),
uaParser = require('ua-parser-js'),
userDirectory = require('./user-directory.js'),
uuid = require('uuid'),
superagent = require('superagent'),
util = require('util'),
validator = require('validator'),
@@ -826,7 +823,7 @@ async function getInviteLink(user, auditSource) {
if (user.source) throw new BoxError(BoxError.CONFLICT, 'User is from an external directory');
if (!user.inviteToken) throw new BoxError(BoxError.BAD_STATE, 'User already used invite link');
const directoryConfig = await getProfileConfig();
const directoryConfig = await userDirectory.getProfileConfig();
const { fqdn:dashboardFqdn } = await dashboard.getLocation();
let inviteLink = `https://${dashboardFqdn}/setupaccount.html?inviteToken=${user.inviteToken}&email=${encodeURIComponent(user.email)}`;
@@ -854,7 +851,7 @@ async function setupAccount(user, data, auditSource) {
assert.strictEqual(typeof data, 'object');
assert(auditSource && typeof auditSource === 'object');
const profileConfig = await getProfileConfig();
const profileConfig = await userDirectory.getProfileConfig();
const tmp = { inviteToken: '' };
@@ -972,32 +969,6 @@ async function setBackgroundImage(id, backgroundImage) {
if (result.length === 0) throw new BoxError(BoxError.NOT_FOUND, 'User not found');
}
async function getProfileConfig() {
const value = await settings.getJson(settings.PROFILE_CONFIG_KEY);
return value || { lockUserProfiles: false, mandatory2FA: false };
}
async function setProfileConfig(profileConfig) {
assert.strictEqual(typeof profileConfig, 'object');
if (constants.DEMO) throw new BoxError(BoxError.BAD_STATE, 'Not allowed in demo mode');
const oldConfig = await getProfileConfig();
await settings.setJson(settings.PROFILE_CONFIG_KEY, profileConfig);
if (profileConfig.mandatory2FA && !oldConfig.mandatory2FA) {
debug('setProfileConfig: logging out non-2FA users to enforce 2FA');
const allUsers = await list();
for (const user of allUsers) {
if (!user.twoFactorAuthenticationEnabled) {
await tokens.delByUserIdAndType(user.id, tokens.ID_WEBADMIN);
await oidc.revokeByUserId(user.id);
}
}
}
}
async function resetSource() {
await database.query('UPDATE users SET source = ?', [ '' ]);
}