SYNC: encrypt superadmin password

This commit is contained in:
SPRINX0\prochazka
2025-04-08 17:23:42 +02:00
committed by Diflow
parent 7c7d6ad548
commit dd210be037
2 changed files with 18 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ const {
getAuthProviderById,
} = require('../auth/authProvider');
const storage = require('./storage');
const { decryptPasswordString } = require('../utility/crypting');
const logger = getLogger('auth');
@@ -95,7 +96,7 @@ module.exports = {
let adminPassword = process.env.ADMIN_PASSWORD;
if (!adminPassword) {
const adminConfig = await storage.readConfig({ group: 'admin' });
adminPassword = adminConfig?.adminPassword;
adminPassword = decryptPasswordString(adminConfig?.adminPassword);
}
if (adminPassword && adminPassword == password) {
return {

View File

@@ -67,6 +67,20 @@ function getEncryptor() {
return _encryptor;
}
function encryptPasswordString(password) {
if (password && !password.startsWith('crypt:')) {
return 'crypt:' + getEncryptor().encrypt(password);
}
return password;
}
function decryptPasswordString(password) {
if (password && password.startsWith('crypt:')) {
return getEncryptor().decrypt(password.substring('crypt:'.length));
}
return password;
}
function encryptObjectPasswordField(obj, field) {
if (obj && obj[field] && !obj[field].startsWith('crypt:')) {
return {
@@ -153,4 +167,6 @@ module.exports = {
loadEncryptionKeyFromExternal,
getEncryptionKey,
setEncryptionKey,
encryptPasswordString,
decryptPasswordString,
};