summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-11 14:08:58 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-11 14:08:58 +0900
commit5af8b77d287f006031238293c29d8d5cea1cd4a1 (patch)
tree75369017b1091e21c3072d0adff062cdc510b701 /packages/backend/src/core
parentMerge branch 'develop' (diff)
parent13.6.0 (diff)
downloadmisskey-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.ts10
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