diff options
| author | misskey-release-bot[bot] <157398866+misskey-release-bot[bot]@users.noreply.github.com> | 2024-08-18 08:08:47 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-18 08:08:47 +0000 |
| commit | 882c8b93c164f2841c88b58034ed58d2553a375c (patch) | |
| tree | a624b844c36c6685755ece1e713febf863faedea /packages/backend/src/server/api/endpoints/flash | |
| parent | Merge pull request #14233 from misskey-dev/develop (diff) | |
| parent | Release: 2024.8.0 (diff) | |
| download | sharkey-882c8b93c164f2841c88b58034ed58d2553a375c.tar.gz sharkey-882c8b93c164f2841c88b58034ed58d2553a375c.tar.bz2 sharkey-882c8b93c164f2841c88b58034ed58d2553a375c.zip | |
Merge pull request #14391 from misskey-dev/develop
Release: 2024.8.0
Diffstat (limited to 'packages/backend/src/server/api/endpoints/flash')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/flash/delete.ts | 24 |
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, + }); + } }); } } |