diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-02-11 14:08:58 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-02-11 14:08:58 +0900 |
| commit | 5af8b77d287f006031238293c29d8d5cea1cd4a1 (patch) | |
| tree | 75369017b1091e21c3072d0adff062cdc510b701 /packages/backend/src/core | |
| parent | Merge branch 'develop' (diff) | |
| parent | 13.6.0 (diff) | |
| download | misskey-5af8b77d287f006031238293c29d8d5cea1cd4a1.tar.gz misskey-5af8b77d287f006031238293c29d8d5cea1cd4a1.tar.bz2 misskey-5af8b77d287f006031238293c29d8d5cea1cd4a1.zip | |
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/RoleService.ts | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index d15d8c0aee..9a782780d1 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -211,8 +211,14 @@ export class RoleService implements OnApplicationShutdown { const assignedRoleIds = assigns.map(x => x.roleId); const roles = await this.rolesCache.fetch(null, () => this.rolesRepository.findBy({})); const assignedBadgeRoles = roles.filter(r => r.asBadge && assignedRoleIds.includes(r.id)); - // コンディショナルロールも含めるのは負荷高そうだから一旦無し - return assignedBadgeRoles; + const badgeCondRoles = roles.filter(r => r.asBadge && (r.target === 'conditional')); + if (badgeCondRoles.length > 0) { + const user = roles.some(r => r.target === 'conditional') ? await this.userCacheService.findById(userId) : null; + const matchedBadgeCondRoles = badgeCondRoles.filter(r => this.evalCond(user!, r.condFormula)); + return [...assignedBadgeRoles, ...matchedBadgeCondRoles]; + } else { + return assignedBadgeRoles; + } } @bindThis |