Skip to content

Commit b8a9065

Browse files
authored
enhance(backend): 公開バッジのみをpackするように (MisskeyIO#652)
1 parent 2b2975c commit b8a9065

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

packages/backend/src/core/entities/UserEntityService.ts

+10-7
Original file line numberDiff line numberDiff line change
@@ -500,13 +500,16 @@ export class UserEntityService implements OnModuleInit {
500500
} : undefined) : undefined,
501501
emojis: this.customEmojiService.populateEmojis(user.emojis, user.host),
502502
onlineStatus: this.getOnlineStatus(user),
503-
// パフォーマンス上の理由でローカルユーザーのみ
504-
badgeRoles: user.host == null ? this.roleService.getUserBadgeRoles(user.id).then(rs => rs.sort((a, b) => b.displayOrder - a.displayOrder).map(r => ({
505-
name: r.name,
506-
iconUrl: r.iconUrl,
507-
displayOrder: r.displayOrder,
508-
behavior: r.badgeBehavior ?? undefined,
509-
}))) : undefined,
503+
badgeRoles: this.roleService.getUserBadgeRoles(user.id).then((rs) => rs
504+
.filter((r) => r.isPublic || iAmModerator)
505+
.sort((a, b) => b.displayOrder - a.displayOrder)
506+
.map((r) => ({
507+
name: r.name,
508+
iconUrl: r.iconUrl,
509+
displayOrder: r.displayOrder,
510+
behavior: r.badgeBehavior ?? undefined,
511+
})),
512+
),
510513

511514
...(isDetailed ? {
512515
url: profile!.url,

packages/backend/test/e2e/users.ts

+11-2
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ describe('ユーザー', () => {
231231
rolePublic = await role(root, { isPublic: true, name: 'Public Role' });
232232
await api('admin/roles/assign', { userId: userRolePublic.id, roleId: rolePublic.id }, root);
233233
userRoleBadge = await signup({ username: 'userRoleBadge' });
234-
roleBadge = await role(root, { asBadge: true, name: 'Badge Role' });
234+
roleBadge = await role(root, { asBadge: true, name: 'Badge Role', isPublic: true });
235235
await api('admin/roles/assign', { userId: userRoleBadge.id, roleId: roleBadge.id }, root);
236236
userSilenced = await signup({ username: 'userSilenced' });
237237
await post(userSilenced, { text: 'test' });
@@ -665,7 +665,16 @@ describe('ユーザー', () => {
665665
displayOrder: roleBadge.displayOrder,
666666
}]);
667667
}
668-
assert.deepStrictEqual(response.roles, []); // バッヂだからといってrolesが取れるとは限らない
668+
assert.deepStrictEqual(response.roles, [{
669+
id: roleBadge.id,
670+
name: roleBadge.name,
671+
color: roleBadge.color,
672+
iconUrl: roleBadge.iconUrl,
673+
description: roleBadge.description,
674+
isModerator: roleBadge.isModerator,
675+
isAdministrator: roleBadge.isAdministrator,
676+
displayOrder: roleBadge.displayOrder,
677+
}]);
669678
});
670679
test('をID指定のリスト形式で取得することができる(空)', async () => {
671680
const parameters = { userIds: [] };

0 commit comments

Comments
 (0)