Add dashboard UI and secure API endpoints

This commit is contained in:
2026-01-27 15:20:10 +01:00
parent 41949fe596
commit 5905b16d50
12 changed files with 1193 additions and 181 deletions
+41 -1
View File
@@ -14,6 +14,43 @@ const normalizePermissionConfig = (config = {}) => ({
commandPermissions: config.commandPermissions ?? {},
});
const sanitizePermissionPayload = (config = {}) => {
const adminRoleIds = Array.isArray(config.adminRoleIds)
? config.adminRoleIds.filter((entry) => typeof entry === 'string' && entry.trim())
: [];
const adminUserIds = Array.isArray(config.adminUserIds)
? config.adminUserIds.filter((entry) => typeof entry === 'string' && entry.trim())
: [];
const commandPermissions = {};
if (config.commandPermissions && typeof config.commandPermissions === 'object') {
Object.entries(config.commandPermissions).forEach(([commandName, entry]) => {
if (!commandName || typeof commandName !== 'string') {
return;
}
if (!entry || typeof entry !== 'object') {
return;
}
const allowedRoleIds = Array.isArray(entry.allowedRoleIds)
? entry.allowedRoleIds.filter((roleId) => typeof roleId === 'string' && roleId.trim())
: [];
const allowedUserIds = Array.isArray(entry.allowedUserIds)
? entry.allowedUserIds.filter((userId) => typeof userId === 'string' && userId.trim())
: [];
commandPermissions[commandName] = {
allowedRoleIds,
allowedUserIds,
};
});
}
return {
adminRoleIds,
adminUserIds,
commandPermissions,
};
};
const memberHasRole = (member, roleIds) =>
roleIds.some((roleId) => member.roles?.cache?.has(roleId));
@@ -35,7 +72,8 @@ const updateGuildPermissions = async ({ guildId, permissions }) => {
const db = dbClient.db('discord');
const collection = db.collection('guild_permissions');
const normalizedPermissions = normalizePermissionConfig(permissions);
const sanitizedPermissions = sanitizePermissionPayload(permissions);
const normalizedPermissions = normalizePermissionConfig(sanitizedPermissions);
const payload = {
guildId,
...normalizedPermissions,
@@ -92,4 +130,6 @@ module.exports = {
getGuildPermissions,
updateGuildPermissions,
isCommandAllowed,
normalizePermissionConfig,
sanitizePermissionPayload,
};