Skip to content

Commit e6886bf

Browse files
authored
Merge pull request #1098 from AppIe314/role-array-support-2
feat: add role array support
2 parents d3d5990 + 48a5fe4 commit e6886bf

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

packages/config/lib/mutations.js

+14-11
Original file line numberDiff line numberDiff line change
@@ -277,49 +277,52 @@ const applyMutations = (config) => {
277277
const aliasObj = Object.fromEntries(
278278
config.authentication.aliases.map((alias) => [alias.name, alias.role]),
279279
)
280-
/** @param {string} role */
281-
const replaceAliases = (role) => aliasObj[role] ?? role
280+
/** @param {string | string[]} role */
281+
const replaceAliases = (role) =>
282+
Array.isArray(role)
283+
? role.flatMap((r) => aliasObj[r] ?? r)
284+
: (aliasObj[role] ?? role)
282285

283286
const replaceBothAliases = (incomingObj) => ({
284287
...incomingObj,
285288
discordRoles: Array.isArray(incomingObj.discordRoles)
286-
? incomingObj.discordRoles.map(replaceAliases)
289+
? incomingObj.discordRoles.flatMap(replaceAliases)
287290
: undefined,
288291
telegramGroups: Array.isArray(incomingObj.telegramGroups)
289-
? incomingObj.telegramGroups.map(replaceAliases)
292+
? incomingObj.telegramGroups.flatMap(replaceAliases)
290293
: undefined,
291294
})
292295

293296
Object.keys(config.authentication.perms).forEach((perm) => {
294297
config.authentication.perms[perm].roles =
295-
config.authentication.perms[perm].roles.map(replaceAliases)
298+
config.authentication.perms[perm].roles.flatMap(replaceAliases)
296299
})
297300

298301
config.authentication.areaRestrictions =
299302
config.authentication.areaRestrictions.map(({ roles, areas }) => ({
300-
roles: roles.map(replaceAliases),
303+
roles: roles.flatMap(replaceAliases),
301304
areas,
302305
}))
303306

304307
config.authentication.strategies = config.authentication.strategies.map(
305308
(strategy) => ({
306309
...strategy,
307310
allowedGuilds: Array.isArray(strategy.allowedGuilds)
308-
? strategy.allowedGuilds.map(replaceAliases)
311+
? strategy.allowedGuilds.flatMap(replaceAliases)
309312
: [],
310313
blockedGuilds: Array.isArray(strategy.blockedGuilds)
311-
? strategy.blockedGuilds.map(replaceAliases)
314+
? strategy.blockedGuilds.flatMap(replaceAliases)
312315
: [],
313316
groups: Array.isArray(strategy.groups)
314-
? strategy.groups.map(replaceAliases)
317+
? strategy.groups.flatMap(replaceAliases)
315318
: [],
316319
allowedUsers: Array.isArray(strategy.allowedUsers)
317-
? strategy.allowedUsers.map(replaceAliases)
320+
? strategy.allowedUsers.flatMap(replaceAliases)
318321
: [],
319322
trialPeriod: {
320323
...strategy.trialPeriod,
321324
roles: Array.isArray(strategy?.trialPeriod?.roles)
322-
? strategy.trialPeriod.roles.map(replaceAliases)
325+
? strategy.trialPeriod.roles.flatMap(replaceAliases)
323326
: [],
324327
},
325328
}),

packages/types/lib/config.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export type Config<Client extends boolean = false> = DeepMerge<
5959
// alwaysEnabledPerms: (keyof BaseConfig['authentication']['perms'])[]
6060
excludeFromTutorial: string[]
6161
alwaysEnabledPerms: string[]
62-
aliases: { role: string; name: string }[]
62+
aliases: { role: string | string[]; name: string }[]
6363
methods: Strategy[]
6464
strategies: {
6565
type: Strategy

0 commit comments

Comments
 (0)