Add dashboard UI and secure API endpoints
This commit is contained in:
+41
-1
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user