浏览代码

[mob]Discard upload to deleted or others collection

Neeraj Gupta 1 年之前
父节点
当前提交
206ab1114e
共有 2 个文件被更改,包括 27 次插入0 次删除
  1. 17 0
      mobile/lib/services/collections_service.dart
  2. 10 0
      mobile/lib/utils/file_uploader.dart

+ 17 - 0
mobile/lib/services/collections_service.dart

@@ -189,6 +189,23 @@ class CollectionsService {
     return result;
   }
 
+  bool allowUpload(int collectionID) {
+    final Collection? c = _collectionIDToCollections[collectionID];
+    if (c == null) {
+      _logger.info('discardUpload: collectionMissing $collectionID');
+      return false;
+    }
+    if (c.isDeleted) {
+      _logger.info('discardUpload: collectionDeleted $collectionID');
+      return false;
+    }
+    if (!c.isOwner(_config.getUserID()!)) {
+      _logger.info('discardUpload: notOwner $collectionID');
+      return false;
+    }
+    return true;
+  }
+
   Future<List<Collection>> getArchivedCollection() async {
     final allCollections = getCollectionsForUI();
     return allCollections

+ 10 - 0
mobile/lib/utils/file_uploader.dart

@@ -401,6 +401,16 @@ class FileUploader {
       _logger.severe('Trying to upload file with missing localID');
       return file;
     }
+    if (!CollectionsService.instance.allowUpload(collectionID)) {
+      _logger.warning(
+        'Upload not allowed for collection $collectionID',
+      );
+      if (!file.isUploaded && file.generatedID != null) {
+        _logger.info("Deleting file entry for " + file.toString());
+        await FilesDB.instance.deleteByGeneratedID(file.generatedID!);
+      }
+      return file;
+    }
 
     final String lockKey = file.localID!;