Files
ldap-auth-service/lib/adminSettings.js
2026-08-21 01:17:30 +05:00

39 lines
1.4 KiB
JavaScript

'use strict';
const fs = require('fs');
const path = require('path');
const settingsPath = path.join(__dirname, '..', 'data', 'admin-settings.json');
function getSettings() {
try {
const raw = fs.readFileSync(settingsPath, 'utf8');
const parsed = JSON.parse(raw);
return {
ouDn: typeof parsed.ouDn === 'string' ? parsed.ouDn : '',
defaultGroups: Array.isArray(parsed.defaultGroups)
? parsed.defaultGroups.filter((g) => typeof g === 'string')
: [],
phoneRequired: !!parsed.phoneRequired,
authEnabled: parsed.authEnabled === undefined ? true : !!parsed.authEnabled
};
} catch (err) {
return { ouDn: '', defaultGroups: [], phoneRequired: false, authEnabled: true };
}
}
function updateSettings(patch) {
const current = getSettings();
const next = { ...current };
if (patch && typeof patch.ouDn === 'string') next.ouDn = patch.ouDn;
if (patch && Array.isArray(patch.defaultGroups)) {
next.defaultGroups = patch.defaultGroups.filter((g) => typeof g === 'string');
}
if (patch && typeof patch.phoneRequired === 'boolean') next.phoneRequired = patch.phoneRequired;
if (patch && typeof patch.authEnabled === 'boolean') next.authEnabled = patch.authEnabled;
fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
fs.writeFileSync(settingsPath, JSON.stringify(next, null, 2), 'utf8');
return next;
}
module.exports = { getSettings, updateSettings, settingsPath };