Add admin list decrees

This commit is contained in:
yflory 2025-01-17 16:00:34 +01:00
parent 17aafe1b63
commit 8470937181
2 changed files with 37 additions and 2 deletions

View File

@ -366,11 +366,45 @@ commands.ADD_ADMIN_KEY = function (Env, args) {
Env.admins = Env.admins || [];
var key = Keys.canonicalize(args[0]);
if (!key) { throw new Error("INVALID_KEY"); }
Env.admins.push(key);
if (Env.admins.includes(key)) { // Nothing to change
return false;
}
Env.admins.push(key);
Env.adminsData.push(args[0]);
return true;
};
commands.RM_ADMIN_KEY = function (Env, args) {
if (!Array.isArray(args) || args.length !== 1 || !args[0]) {
throw new Error("INVALID_ARGS");
}
const key = Keys.canonicalize(args[0]);
if (!key) { throw new Error("INVALID_KEY"); }
Env.admins = Env.admins || [];
if (!Env.admins.includes(key)) { // Nothing to change
return false;
}
// NOTE prevent removing config.js hardcoded admin keys
if (Array.isArray(config?.adminKeys) && config.adminKeys.includes(key)) {
throw new Error("CANT_REMOVE_CONFIG");
}
let idx = Env.admins.indexOk(key);
if (idx < 0) { return false; } // should never happen
if (Env.admins.length === 1) { throw new Error("CANT_REMOVE_LAST_ADMIN"); }
Env.admins.splice(idx, 1);
Env.adminsData = Env.adminsData.filter(str => {
const ed = Keys.canonicalize(str);
if (!ed) { return true; }
return ed !== key;
});
return true;
};

View File

@ -372,6 +372,7 @@ module.exports.create = function (config) {
Core.DEFAULT_LIMIT;
try {
Env.adminsData = config.adminKeys || [];
Env.admins = (config.adminKeys || []).map(function (k) {
try {
return Keys.canonicalize(k);