summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/RoleService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-05 10:37:03 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-05 10:37:03 +0900
commit6a3039f7b7d635a3a3e00ea9501bc44b1c9dc76c (patch)
tree77215228ac223088049db5820e94ca092ee87ffa /packages/backend/src/core/RoleService.ts
parentupdate CHANGELOG.md (diff)
downloadmisskey-6a3039f7b7d635a3a3e00ea9501bc44b1c9dc76c.tar.gz
misskey-6a3039f7b7d635a3a3e00ea9501bc44b1c9dc76c.tar.bz2
misskey-6a3039f7b7d635a3a3e00ea9501bc44b1c9dc76c.zip
feat: ロールにアイコンを設定してユーザー名の横に表示できるように
Resolve #9761
Diffstat (limited to 'packages/backend/src/core/RoleService.ts')
-rw-r--r--packages/backend/src/core/RoleService.ts13
1 files changed, 13 insertions, 0 deletions
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index f8f9231cdd..d15d8c0aee 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -202,6 +202,19 @@ export class RoleService implements OnApplicationShutdown {
return [...assignedRoles, ...matchedCondRoles];
}
+ /**
+ * 指定ユーザーのバッジロール一覧取得
+ */
+ @bindThis
+ public async getUserBadgeRoles(userId: User['id']) {
+ const assigns = await this.roleAssignmentByUserIdCache.fetch(userId, () => this.roleAssignmentsRepository.findBy({ userId }));
+ 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;
+ }
+
@bindThis
public async getUserPolicies(userId: User['id'] | null): Promise<RolePolicies> {
const meta = await this.metaService.fetch();