Add dashboard UI and secure guild permissions
This commit is contained in:
+37
-4
@@ -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) =>
|
||||
|
||||
Reference in New Issue
Block a user