diff options
| author | zyoshoka <107108195+zyoshoka@users.noreply.github.com> | 2024-08-17 15:01:08 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-17 15:01:08 +0900 |
| commit | fd744f44c1ee7aff71d9dba6096cc9ffcb934271 (patch) | |
| tree | 10edf1a76a915182a87e260bc7c2ba60d337e825 /packages/backend/src/server/api/endpoints/pages/delete.ts | |
| parent | :art: (diff) | |
| download | sharkey-fd744f44c1ee7aff71d9dba6096cc9ffcb934271.tar.gz sharkey-fd744f44c1ee7aff71d9dba6096cc9ffcb934271.tar.bz2 sharkey-fd744f44c1ee7aff71d9dba6096cc9ffcb934271.zip | |
enhance(backend): ページ、ギャラリー、Playのモデレーション強化 (#13523)
* enhance(backend): Page、ギャラリー、Playのモデレーション強化
* Update CHANGELOG.md
* fix: update misskey-js
* refactor(frontend): use `MkA`
* Update CHANGELOG.md
* fix(i18n): Page -> ページ
Diffstat (limited to 'packages/backend/src/server/api/endpoints/pages/delete.ts')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/pages/delete.ts | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/endpoints/pages/delete.ts b/packages/backend/src/server/api/endpoints/pages/delete.ts index aa2ba75a41..f2bc946788 100644 --- a/packages/backend/src/server/api/endpoints/pages/delete.ts +++ b/packages/backend/src/server/api/endpoints/pages/delete.ts @@ -4,9 +4,11 @@ */ import { Inject, Injectable } from '@nestjs/common'; -import type { PagesRepository } from '@/models/_.js'; +import type { PagesRepository, UsersRepository } from '@/models/_.js'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { DI } from '@/di-symbols.js'; +import { ModerationLogService } from '@/core/ModerationLogService.js'; +import { RoleService } from '@/core/RoleService.js'; import { ApiError } from '../../error.js'; export const meta = { @@ -44,17 +46,35 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- constructor( @Inject(DI.pagesRepository) private pagesRepository: PagesRepository, + + @Inject(DI.usersRepository) + private usersRepository: UsersRepository, + + private moderationLogService: ModerationLogService, + private roleService: RoleService, ) { super(meta, paramDef, async (ps, me) => { const page = await this.pagesRepository.findOneBy({ id: ps.pageId }); + if (page == null) { throw new ApiError(meta.errors.noSuchPage); } - if (page.userId !== me.id) { + + if (!await this.roleService.isModerator(me) && page.userId !== me.id) { throw new ApiError(meta.errors.accessDenied); } await this.pagesRepository.delete(page.id); + + if (page.userId !== me.id) { + const user = await this.usersRepository.findOneByOrFail({ id: page.userId }); + this.moderationLogService.log(me, 'deletePage', { + pageId: page.id, + pageUserId: page.userId, + pageUserUsername: user.username, + page, + }); + } }); } } |