diff --git a/locales/index.d.ts b/locales/index.d.ts index cbfc925f0f..055156def6 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2249,6 +2249,14 @@ export interface Locale { "mention": string; }; }; + "_moderationLogTypes": { + "roleAssigned": string; + "roleUnassigned": string; + "roleUpdated": string; + "suspend": string; + "unsuspend": string; + "addEmoji": string; + }; } declare const locales: { [lang: string]: Locale; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 18dee2b7a1..d36e047d38 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -2161,3 +2161,13 @@ _webhookSettings: renote: "Renoteされたとき" reaction: "リアクションがあったとき" mention: "メンションされたとき" + +_moderationLogTypes: + assignRole: "ロールへアサイン" + unassignRole: "ロールのアサイン解除" + updateRole: "ロール設定更新" + suspend: "凍結" + unsuspend: "凍結解除" + addCustomEmoji: "カスタム絵文字追加" + updateServerSettings: "サーバー設定更新" + updateUserNote: "モデレーションノート更新" diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 25f3896fd6..39f21ecec4 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -412,7 +412,7 @@ export class RoleService implements OnApplicationShutdown { this.globalEventService.publishInternalEvent('userRoleAssigned', created); if (moderator) { - this.moderationLogService.log(moderator, 'roleAssigned', { + this.moderationLogService.log(moderator, 'assignRole', { roleId: roleId, roleName: role.name, userId: userId, @@ -446,7 +446,7 @@ export class RoleService implements OnApplicationShutdown { if (moderator) { const role = await this.rolesRepository.findOneByOrFail({ id: roleId }); - this.moderationLogService.log(moderator, 'roleUnassigned', { + this.moderationLogService.log(moderator, 'unassignRole', { roleId: roleId, roleName: role.name, userId: userId, @@ -485,7 +485,7 @@ export class RoleService implements OnApplicationShutdown { this.globalEventService.publishInternalEvent('roleUpdated', updated); if (moderator) { - this.moderationLogService.log(moderator, 'roleUpdated', { + this.moderationLogService.log(moderator, 'updateRole', { roleId: role.id, before: role, after: updated, diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts index 022808fe91..fc297c4702 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/add.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/add.ts @@ -79,7 +79,7 @@ export default class extends Endpoint { // eslint- roleIdsThatCanBeUsedThisEmojiAsReaction: ps.roleIdsThatCanBeUsedThisEmojiAsReaction ?? [], }); - this.moderationLogService.log(me, 'addEmoji', { + this.moderationLogService.log(me, 'addCustomEmoji', { emojiId: emoji.id, }); diff --git a/packages/backend/src/server/api/endpoints/admin/roles/assign.ts b/packages/backend/src/server/api/endpoints/admin/roles/assign.ts index 9a005982d4..a0f3edd867 100644 --- a/packages/backend/src/server/api/endpoints/admin/roles/assign.ts +++ b/packages/backend/src/server/api/endpoints/admin/roles/assign.ts @@ -83,7 +83,7 @@ export default class extends Endpoint { // eslint- return; } - await this.roleService.assign(user.id, role.id, ps.expiresAt ? new Date(ps.expiresAt) : null); + await this.roleService.assign(user.id, role.id, ps.expiresAt ? new Date(ps.expiresAt) : null, me); }); } } diff --git a/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts b/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts index 0a79296c05..4c27583111 100644 --- a/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts +++ b/packages/backend/src/server/api/endpoints/admin/roles/unassign.ts @@ -81,7 +81,7 @@ export default class extends Endpoint { // eslint- throw new ApiError(meta.errors.noSuchUser); } - await this.roleService.unassign(user.id, role.id); + await this.roleService.unassign(user.id, role.id, me); }); } } diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts index 04c517e947..ea6ebdd1fe 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts @@ -447,7 +447,7 @@ export default class extends Endpoint { // eslint- const after = await this.metaService.fetch(true); - this.moderationLogService.log(me, 'updateMeta', { + this.moderationLogService.log(me, 'updateServerSettings', { before, after, }); diff --git a/packages/backend/src/server/api/endpoints/admin/update-user-note.ts b/packages/backend/src/server/api/endpoints/admin/update-user-note.ts index 813b42c216..7ab7f9db03 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-user-note.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-user-note.ts @@ -49,7 +49,7 @@ export default class extends Endpoint { // eslint- moderationNote: ps.text, }); - this.moderationLogService.log(me, 'userNoteUpdated', { + this.moderationLogService.log(me, 'updateServerSettings', { userId: user.id, before: currentProfile.moderationNote, after: ps.text, diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts index d2a880f250..afdea2a9e1 100644 --- a/packages/backend/src/types.ts +++ b/packages/backend/src/types.ts @@ -27,10 +27,10 @@ export const mutedNoteReasons = ['word', 'manual', 'spam', 'other'] as const; export const ffVisibility = ['public', 'followers', 'private'] as const; -export const moderationLogTypes = ['updateMeta', 'suspend', 'unsuspend', 'userNoteUpdated', 'addEmoji', 'roleAssigned', 'roleUnassigned', 'roleUpdated', 'roleDeleted', 'clearQueue', 'promoteQueue'] as const; +export const moderationLogTypes = ['updateServerSettings', 'suspend', 'unsuspend', 'updateUserNote', 'addCustomEmoji', 'assignRole', 'unassignRole', 'updateRole', 'deleteRole', 'clearQueue', 'promoteQueue'] as const; export type ModerationLogPayloads = { - updateMeta: { + updateServerSettings: { before: any | null; after: any | null; }; @@ -40,31 +40,31 @@ export type ModerationLogPayloads = { unsuspend: { targetId: string; }; - userNoteUpdated: { + updateUserNote: { userId: string; before: string | null; after: string | null; }; - addEmoji: { + addCustomEmoji: { emojiId: string; }; - roleAssigned: { + assignRole: { userId: string; roleId: string; roleName: string; expiresAt: string | null; }; - roleUnassigned: { + unassignRole: { userId: string; roleId: string; roleName: string; }; - roleUpdated: { + updateRole: { roleId: string; before: any; after: any; }; - roleDeleted: { + deleteRole: { roleId: string; roleName: string; }; diff --git a/packages/frontend/src/pages/admin/modlog.ModLog.vue b/packages/frontend/src/pages/admin/modlog.ModLog.vue index 05adce0558..3a474f73a8 100644 --- a/packages/frontend/src/pages/admin/modlog.ModLog.vue +++ b/packages/frontend/src/pages/admin/modlog.ModLog.vue @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only