From 3c6ab751b306c8aa8d60911a9ced8da52fff5c6c Mon Sep 17 00:00:00 2001 From: n1lsqn Date: Mon, 6 May 2024 11:55:00 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=B5=B5=E6=96=87=E5=AD=97=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=83=AD=E3=83=BC=E3=83=AB=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/ja-JP.yml | 1 + packages/backend/src/core/RoleService.ts | 3 +++ .../backend/src/models/json-schema/role.ts | 4 ++++ .../api/endpoints/admin/emoji/delete-bulk.ts | 2 +- .../api/endpoints/admin/emoji/delete.ts | 2 +- .../admin/emoji/remove-aliases-bulk.ts | 2 +- packages/frontend/src/const.ts | 1 + .../frontend/src/pages/admin/roles.editor.vue | 22 ++++++++++++++++++- packages/frontend/src/pages/admin/roles.vue | 10 ++++++++- packages/misskey-js/src/autogen/types.ts | 1 + 10 files changed, 43 insertions(+), 5 deletions(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index de3d03db17bc..cc0e49e74313 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1712,6 +1712,7 @@ _role: canUseChannel: "チャンネルの利用" canUseHighlight: "ハイライトの利用" canUseRemoteIconDecorations: "リモートアイコンデコレーションの利用" + canEmojiDeletion: "絵文字の削除" driveCapacity: "ドライブ容量" alwaysMarkNsfw: "ファイルにNSFWを常に付与" pinMax: "ノートのピン留めの最大数" diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 33cb639372c9..f933a09e37d7 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -46,6 +46,7 @@ export type RolePolicies = { canUseChannel: boolean; canUseHighlight: boolean; canUseRemoteIconDecorations: boolean; + canEmojiDeletion: boolean; canSearchNotes: boolean; canUseTranslator: boolean; canHideAds: boolean; @@ -78,6 +79,7 @@ export const DEFAULT_POLICIES: RolePolicies = { canManageAvatarDecorations: false, canUseChannel: false, canUseRemoteIconDecorations: true, + canEmojiDeletion: false, canUseHighlight: true, canSearchNotes: false, canUseTranslator: true, @@ -385,6 +387,7 @@ export class RoleService implements OnApplicationShutdown, OnModuleInit { canUseChannel: calc('canUseChannel', vs => vs.some(v => v === true)), canUseHighlight: calc('canUseHighlight', vs => vs.some(v => v === true)), canUseRemoteIconDecorations: calc('canUseRemoteIconDecorations', vs => vs.some(v => v === true)), + canEmojiDeletion: calc('canEmojiDeletion', vs => vs.some(v => v === true)), canSearchNotes: calc('canSearchNotes', vs => vs.some(v => v === true)), canUseTranslator: calc('canUseTranslator', vs => vs.some(v => v === true)), canHideAds: calc('canHideAds', vs => vs.some(v => v === true)), diff --git a/packages/backend/src/models/json-schema/role.ts b/packages/backend/src/models/json-schema/role.ts index 5636eaf6e812..94b77d6da271 100644 --- a/packages/backend/src/models/json-schema/role.ts +++ b/packages/backend/src/models/json-schema/role.ts @@ -224,6 +224,10 @@ export const packedRolePoliciesSchema = { type: 'boolean', optional: false, nullable: false, }, + canEmojiDeletion: { + type: 'boolean', + optional: false, nullable: false, + }, canSearchNotes: { type: 'boolean', optional: false, nullable: false, diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts index cec9f700c3af..c57e7c6870e9 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete-bulk.ts @@ -11,7 +11,7 @@ export const meta = { tags: ['admin'], requireCredential: true, - requireRolePolicy: 'canManageCustomEmojis', + requireRolePolicy: 'canEmojiDeletion', kind: 'write:admin:emoji', } as const; diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts index 50c45b6ac5d9..6e87fe4845dc 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/delete.ts @@ -11,7 +11,7 @@ export const meta = { tags: ['admin'], requireCredential: true, - requireRolePolicy: 'canManageCustomEmojis', + requireRolePolicy: 'canEmojiDeletion', kind: 'write:admin:emoji', errors: { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts index 0fa119eabeab..e4f2443875ee 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/remove-aliases-bulk.ts @@ -11,7 +11,7 @@ export const meta = { tags: ['admin'], requireCredential: true, - requireRolePolicy: 'canManageCustomEmojis', + requireRolePolicy: 'canEmojiDeletion', kind: 'write:admin:emoji', } as const; diff --git a/packages/frontend/src/const.ts b/packages/frontend/src/const.ts index 6a5daf85bccf..2187fdd3628e 100644 --- a/packages/frontend/src/const.ts +++ b/packages/frontend/src/const.ts @@ -86,6 +86,7 @@ export const ROLE_POLICIES = [ 'canUseChannel', 'canUseHighlight', 'canUseRemoteIconDecorations', + 'canEmojiDeletion', 'canSearchNotes', 'canUseTranslator', 'canHideAds', diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue index 359bdbbb5c73..054096eaf30e 100644 --- a/packages/frontend/src/pages/admin/roles.editor.vue +++ b/packages/frontend/src/pages/admin/roles.editor.vue @@ -178,7 +178,7 @@ SPDX-License-Identifier: AGPL-3.0-only - +