diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-09-24 15:40:38 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-09-24 15:40:38 +0900 |
| commit | 841e6ff901a5a11769bd419ccf8b17c0085d938c (patch) | |
| tree | d1f448c49969d3229520d3588440c4fe71964c72 /packages/backend/src/core | |
| parent | improve moderation log (diff) | |
| download | misskey-841e6ff901a5a11769bd419ccf8b17c0085d938c.tar.gz misskey-841e6ff901a5a11769bd419ccf8b17c0085d938c.tar.bz2 misskey-841e6ff901a5a11769bd419ccf8b17c0085d938c.zip | |
improve moderation log
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/DriveService.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/packages/backend/src/core/DriveService.ts b/packages/backend/src/core/DriveService.ts index 2ff062142c..0409a4f53b 100644 --- a/packages/backend/src/core/DriveService.ts +++ b/packages/backend/src/core/DriveService.ts @@ -650,6 +650,57 @@ export class DriveService { } @bindThis + public async update(file: MiDriveFile, values: Partial<MiDriveFile>, updater: MiUser) { + const alwaysMarkNsfw = (await this.roleService.getUserPolicies(file.userId)).alwaysMarkNsfw; + + if (values.name && !this.driveFileEntityService.validateFileName(file.name)) { + throw new Error('invalid filename'); + } + + if (values.isSensitive !== undefined && values.isSensitive !== file.isSensitive && alwaysMarkNsfw && !values.isSensitive) { + throw new Error('cannot unmark nsfw'); + } + + if (values.folderId != null) { + const folder = await this.driveFoldersRepository.findOneBy({ + id: values.folderId, + userId: file.userId!, + }); + + if (folder == null) { + throw new Error('folder-not-found'); + } + } + + await this.driveFilesRepository.update(file.id, values); + + const fileObj = await this.driveFileEntityService.pack(file, { self: true }); + + // Publish fileUpdated event + if (file.userId) { + this.globalEventService.publishDriveStream(file.userId, 'fileUpdated', fileObj); + } + + if (await this.roleService.isModerator(updater) && (file.userId !== updater.id)) { + if (values.isSensitive !== undefined && values.isSensitive !== file.isSensitive) { + if (values.isSensitive) { + this.moderationLogService.log(updater, 'markSensitiveDriveFile', { + fileId: file.id, + fileUserId: file.userId, + }); + } else { + this.moderationLogService.log(updater, 'unmarkSensitiveDriveFile', { + fileId: file.id, + fileUserId: file.userId, + }); + } + } + } + + return fileObj; + } + + @bindThis public async deleteFile(file: MiDriveFile, isExpired = false, deleter?: MiUser) { if (file.storedInternal) { this.internalStorageService.del(file.accessKey!); |