summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/pages
diff options
context:
space:
mode:
authorzyoshoka <107108195+zyoshoka@users.noreply.github.com>2024-08-17 15:01:08 +0900
committerGitHub <noreply@github.com>2024-08-17 15:01:08 +0900
commitfd744f44c1ee7aff71d9dba6096cc9ffcb934271 (patch)
tree10edf1a76a915182a87e260bc7c2ba60d337e825 /packages/backend/src/server/api/endpoints/pages
parent:art: (diff)
downloadsharkey-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')
-rw-r--r--packages/backend/src/server/api/endpoints/pages/delete.ts24
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,
+ });
+ }
});
}
}