summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-09-24 15:40:38 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-09-24 15:40:38 +0900
commit841e6ff901a5a11769bd419ccf8b17c0085d938c (patch)
treed1f448c49969d3229520d3588440c4fe71964c72 /packages/backend/src/core
parentimprove moderation log (diff)
downloadmisskey-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.ts51
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!);