diff --git a/locales/index.d.ts b/locales/index.d.ts index f015a3d503..c2e7fa4891 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -6650,6 +6650,10 @@ export interface Locale extends ILocale { * パブリック投稿の許可 */ "canPublicNote": string; + /** + * ノートの編集の許可 + */ + "canEditNote": string; /** * ノート内の最大メンション数 */ diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 5f186d1d39..836d85495b 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1719,6 +1719,7 @@ _role: gtlAvailable: "グローバルタイムラインの閲覧" ltlAvailable: "ローカルタイムラインの閲覧" canPublicNote: "パブリック投稿の許可" + canEditNote: "ノートの編集の許可" mentionMax: "ノート内の最大メンション数" canInvite: "サーバー招待コードの発行" inviteLimit: "招待コードの作成可能数" diff --git a/packages/backend/src/server/api/endpoints/notes/update.ts b/packages/backend/src/server/api/endpoints/notes/update.ts index 433f20806e..cfa5d12488 100644 --- a/packages/backend/src/server/api/endpoints/notes/update.ts +++ b/packages/backend/src/server/api/endpoints/notes/update.ts @@ -41,6 +41,11 @@ export const meta = { code: 'ACCESS_DENIED', id: 'fe8d7103-0ea8-4ec3-814d-f8b401dc69e9', }, + cannotEditNote: { + message: 'Editing notes are not allowed by the role policy.', + code: 'CANNOT_EDIT_NOTE', + id: '59ece09c-56ab-4bd5-905c-0f6bbf5af143', + }, containsProhibitedWords: { message: 'Cannot post because it contains prohibited words.', code: 'CONTAINS_PROHIBITED_WORDS', @@ -138,8 +143,12 @@ export default class extends Endpoint { }); // この操作を行うのが投稿者とは限らない(例えばモデレーター)ため - if (!await this.roleService.isModerator(me) && (note.userId !== me.id) && (await this.roleService.getUserPolicies(me.id)).canEditNote !== true) { - throw new ApiError(meta.errors.accessDenied); + if (!await this.roleService.isModerator(me)) { + if (note.userId !== me.id) { + throw new ApiError(meta.errors.accessDenied); + } else if ((await this.roleService.getUserPolicies(me.id)).canEditNote !== true) { + throw new ApiError(meta.errors.cannotEditNote); + } } try { diff --git a/packages/frontend/src/components/MkNoteHistory.vue b/packages/frontend/src/components/MkNoteHistory.vue index 8645be9a32..610d1f7082 100644 --- a/packages/frontend/src/components/MkNoteHistory.vue +++ b/packages/frontend/src/components/MkNoteHistory.vue @@ -19,6 +19,9 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+ +