Add dashboard UI and secure guild permissions

This commit is contained in:
2026-01-27 15:40:06 +01:00
parent 06fdd57aa0
commit 4fe1831386
8 changed files with 1039 additions and 404 deletions
+37 -4
View File
@@ -6,12 +6,45 @@ const DEFAULT_GUILD_PERMISSIONS = {
commandPermissions: {},
};
const COMMAND_NAME_REGEX = /^[a-z0-9_-]{1,32}$/i;
const normalizeIdArray = (value) => {
if (!Array.isArray(value)) {
return [];
}
const normalized = value
.map((entry) => (typeof entry === 'string' ? entry.trim() : ''))
.filter((entry) => entry.length > 0);
return Array.from(new Set(normalized));
};
const sanitizeCommandPermissions = (commandPermissions = {}) => {
if (!commandPermissions || typeof commandPermissions !== 'object') {
return {};
}
const sanitized = {};
for (const [commandName, commandConfig] of Object.entries(commandPermissions)) {
if (!COMMAND_NAME_REGEX.test(commandName)) {
continue;
}
sanitized[commandName] = {
allowedRoleIds: normalizeIdArray(commandConfig?.allowedRoleIds),
allowedUserIds: normalizeIdArray(commandConfig?.allowedUserIds),
};
}
return sanitized;
};
const normalizePermissionConfig = (config = {}) => ({
...DEFAULT_GUILD_PERMISSIONS,
...config,
adminRoleIds: Array.isArray(config.adminRoleIds) ? config.adminRoleIds : [],
adminUserIds: Array.isArray(config.adminUserIds) ? config.adminUserIds : [],
commandPermissions: config.commandPermissions ?? {},
adminRoleIds: normalizeIdArray(config.adminRoleIds),
adminUserIds: normalizeIdArray(config.adminUserIds),
commandPermissions: sanitizeCommandPermissions(config.commandPermissions),
});
const memberHasRole = (member, roleIds) =>