Skip to content

Commit f3a16bc

Browse files
authored
ロールのユーザーリストを非公開にできるように (#10987)
* ロールのユーザーリストを非公開にできるように * Changelog update
1 parent f696279 commit f3a16bc

File tree

9 files changed

+45
-1
lines changed

9 files changed

+45
-1
lines changed

CHANGELOG.md

+11
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@
1111
-
1212
1313
-->
14+
## 13.x.x (unreleased)
15+
16+
### General
17+
- ロールが付与されているユーザーリストを非公開にできるように
18+
19+
### Client
20+
-
21+
22+
### Server
23+
-
24+
1425

1526
## 13.13.1
1627

locales/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1431,6 +1431,8 @@ export interface Locale {
14311431
"isConditionalRole": string;
14321432
"isPublic": string;
14331433
"descriptionOfIsPublic": string;
1434+
"isPublicUsers": string;
1435+
"descriptionOfIsPublicUsers": string;
14341436
"options": string;
14351437
"policies": string;
14361438
"baseRole": string;

locales/ja-JP.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -1353,7 +1353,9 @@ _role:
13531353
condition: "条件"
13541354
isConditionalRole: "これはコンディショナルロールです。"
13551355
isPublic: "ロールを公開"
1356-
descriptionOfIsPublic: "ロールにアサインされたユーザーを誰でも見ることができます。また、ユーザーのプロフィールでこのロールが表示されます。"
1356+
descriptionOfIsPublic: "ユーザーのプロフィールでこのロールが表示されます。"
1357+
isPublicUsers: "ユーザーリストを公開"
1358+
descriptionOfIsPublicUsers: "ロールにアサインされたユーザーのリストを誰でも見ることができます。"
13571359
options: "オプション"
13581360
policies: "ポリシー"
13591361
baseRole: "ベースロール"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export class roleuserhidden1686381571997 {
2+
name = 'roleuserhidden1686381571997'
3+
4+
async up(queryRunner) {
5+
await queryRunner.query(`ALTER TABLE "role" ADD "isPublicUsers" boolean NOT NULL DEFAULT true`);
6+
}
7+
8+
async down(queryRunner) {
9+
await queryRunner.query(`ALTER TABLE "role" DROP COLUMN "isPublicUsers"`);
10+
}
11+
}

packages/backend/src/models/entities/Role.ts

+5
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ export class Role {
167167
})
168168
public displayOrder: number;
169169

170+
@Column('boolean', {
171+
default: true,
172+
})
173+
public isPublicUsers: boolean;
174+
170175
@Column('jsonb', {
171176
default: { },
172177
})

packages/backend/src/server/api/endpoints/admin/roles/create.ts

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export const paramDef = {
2626
isModerator: { type: 'boolean' },
2727
isAdministrator: { type: 'boolean' },
2828
isExplorable: { type: 'boolean', default: false }, // optional for backward compatibility
29+
isPublicUsers: { type: 'boolean', default: true }, // optional for backward compatibility
2930
asBadge: { type: 'boolean' },
3031
canEditMembersByModerator: { type: 'boolean' },
3132
displayOrder: { type: 'number' },
@@ -78,6 +79,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
7879
isAdministrator: ps.isAdministrator,
7980
isModerator: ps.isModerator,
8081
isExplorable: ps.isExplorable,
82+
isPublicUsers: ps.isPublicUsers,
8183
asBadge: ps.asBadge,
8284
canEditMembersByModerator: ps.canEditMembersByModerator,
8385
displayOrder: ps.displayOrder,

packages/backend/src/server/api/endpoints/admin/roles/update.ts

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export const paramDef = {
3434
isModerator: { type: 'boolean' },
3535
isAdministrator: { type: 'boolean' },
3636
isExplorable: { type: 'boolean' },
37+
isPublicUsers: { type: 'boolean' },
3738
asBadge: { type: 'boolean' },
3839
canEditMembersByModerator: { type: 'boolean' },
3940
displayOrder: { type: 'number' },
@@ -87,6 +88,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
8788
isModerator: ps.isModerator,
8889
isAdministrator: ps.isAdministrator,
8990
isExplorable: ps.isExplorable,
91+
isPublicUsers: ps.isPublicUsers,
9092
asBadge: ps.asBadge,
9193
canEditMembersByModerator: ps.canEditMembersByModerator,
9294
displayOrder: ps.displayOrder,

packages/backend/src/server/api/endpoints/roles/users.ts

+3
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
5454
if (role == null) {
5555
throw new ApiError(meta.errors.noSuchRole);
5656
}
57+
if (!role.isPublicUsers) {
58+
return [];
59+
}
5760

5861
const query = this.queryService.makePaginationQuery(this.roleAssignmentsRepository.createQueryBuilder('assign'), ps.sinceId, ps.untilId)
5962
.andWhere('assign.roleId = :roleId', { roleId: role.id })

packages/frontend/src/pages/admin/roles.editor.vue

+6
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@
6363
<template #caption>{{ i18n.ts._role.descriptionOfIsExplorable }}</template>
6464
</MkSwitch>
6565

66+
<MkSwitch v-model="role.isPublicUsers" :readonly="readonly">
67+
<template #label>{{ i18n.ts._role.isPublicUsers }}</template>
68+
<template #caption>{{ i18n.ts._role.descriptionOfIsPublicUsers }}</template>
69+
</MkSwitch>
70+
6671
<FormSlot>
6772
<template #label><i class="ti ti-license"></i> {{ i18n.ts._role.policies }}</template>
6873
<div class="_gaps_s">
@@ -501,6 +506,7 @@ const save = throttle(100, () => {
501506
isModerator: role.isModerator,
502507
isPublic: role.isPublic,
503508
isExplorable: role.isExplorable,
509+
isPublicUsers: role.isPublicUsers,
504510
asBadge: role.asBadge,
505511
canEditMembersByModerator: role.canEditMembersByModerator,
506512
policies: role.policies,

0 commit comments

Comments
 (0)