diff --git a/packages/config/lib/mutations.js b/packages/config/lib/mutations.js index a079c397d..baa4fdc56 100644 --- a/packages/config/lib/mutations.js +++ b/packages/config/lib/mutations.js @@ -277,27 +277,30 @@ const applyMutations = (config) => { const aliasObj = Object.fromEntries( config.authentication.aliases.map((alias) => [alias.name, alias.role]), ) - /** @param {string} role */ - const replaceAliases = (role) => aliasObj[role] ?? role + /** @param {string | string[]} role */ + const replaceAliases = (role) => + Array.isArray(role) + ? role.flatMap((r) => aliasObj[r] ?? r) + : (aliasObj[role] ?? role) const replaceBothAliases = (incomingObj) => ({ ...incomingObj, discordRoles: Array.isArray(incomingObj.discordRoles) - ? incomingObj.discordRoles.map(replaceAliases) + ? incomingObj.discordRoles.flatMap(replaceAliases) : undefined, telegramGroups: Array.isArray(incomingObj.telegramGroups) - ? incomingObj.telegramGroups.map(replaceAliases) + ? incomingObj.telegramGroups.flatMap(replaceAliases) : undefined, }) Object.keys(config.authentication.perms).forEach((perm) => { config.authentication.perms[perm].roles = - config.authentication.perms[perm].roles.map(replaceAliases) + config.authentication.perms[perm].roles.flatMap(replaceAliases) }) config.authentication.areaRestrictions = config.authentication.areaRestrictions.map(({ roles, areas }) => ({ - roles: roles.map(replaceAliases), + roles: roles.flatMap(replaceAliases), areas, })) @@ -305,21 +308,21 @@ const applyMutations = (config) => { (strategy) => ({ ...strategy, allowedGuilds: Array.isArray(strategy.allowedGuilds) - ? strategy.allowedGuilds.map(replaceAliases) + ? strategy.allowedGuilds.flatMap(replaceAliases) : [], blockedGuilds: Array.isArray(strategy.blockedGuilds) - ? strategy.blockedGuilds.map(replaceAliases) + ? strategy.blockedGuilds.flatMap(replaceAliases) : [], groups: Array.isArray(strategy.groups) - ? strategy.groups.map(replaceAliases) + ? strategy.groups.flatMap(replaceAliases) : [], allowedUsers: Array.isArray(strategy.allowedUsers) - ? strategy.allowedUsers.map(replaceAliases) + ? strategy.allowedUsers.flatMap(replaceAliases) : [], trialPeriod: { ...strategy.trialPeriod, roles: Array.isArray(strategy?.trialPeriod?.roles) - ? strategy.trialPeriod.roles.map(replaceAliases) + ? strategy.trialPeriod.roles.flatMap(replaceAliases) : [], }, }), diff --git a/packages/types/lib/config.d.ts b/packages/types/lib/config.d.ts index a6dce9935..3c17ecf67 100644 --- a/packages/types/lib/config.d.ts +++ b/packages/types/lib/config.d.ts @@ -59,7 +59,7 @@ export type Config = DeepMerge< // alwaysEnabledPerms: (keyof BaseConfig['authentication']['perms'])[] excludeFromTutorial: string[] alwaysEnabledPerms: string[] - aliases: { role: string; name: string }[] + aliases: { role: string | string[]; name: string }[] methods: Strategy[] strategies: { type: Strategy