summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/flash
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/flash
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/flash')
-rw-r--r--packages/backend/src/server/api/endpoints/flash/delete.ts24
1 files changed, 22 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/endpoints/flash/delete.ts b/packages/backend/src/server/api/endpoints/flash/delete.ts
index d3d47e5deb..6912450abf 100644
--- a/packages/backend/src/server/api/endpoints/flash/delete.ts
+++ b/packages/backend/src/server/api/endpoints/flash/delete.ts
@@ -4,9 +4,11 @@
*/
import { Inject, Injectable } from '@nestjs/common';
-import type { FlashsRepository } from '@/models/_.js';
+import type { FlashsRepository, 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.flashsRepository)
private flashsRepository: FlashsRepository,
+
+ @Inject(DI.usersRepository)
+ private usersRepository: UsersRepository,
+
+ private moderationLogService: ModerationLogService,
+ private roleService: RoleService,
) {
super(meta, paramDef, async (ps, me) => {
const flash = await this.flashsRepository.findOneBy({ id: ps.flashId });
+
if (flash == null) {
throw new ApiError(meta.errors.noSuchFlash);
}
- if (flash.userId !== me.id) {
+
+ if (!await this.roleService.isModerator(me) && flash.userId !== me.id) {
throw new ApiError(meta.errors.accessDenied);
}
await this.flashsRepository.delete(flash.id);
+
+ if (flash.userId !== me.id) {
+ const user = await this.usersRepository.findOneByOrFail({ id: flash.userId });
+ this.moderationLogService.log(me, 'deleteFlash', {
+ flashId: flash.id,
+ flashUserId: flash.userId,
+ flashUserUsername: user.username,
+ flash,
+ });
+ }
});
}
}