marinofaggiana 5 жил өмнө
parent
commit
227ba73ffc

+ 17 - 0
iOSClient/CCGlobal.h

@@ -45,6 +45,23 @@
 //#if TARGET_OS_SIMULATOR
 //#endif
 
+// PERMISSION:
+//
+// Create file or folder or Full permission RGDNVW
+// Full permission for folder               RGDNVCK
+// Full permission for a file               SRGDNVW
+// Full permission                          SRMGDNVW
+// Update file                              SGDNVW
+// Update file                              RGD
+// Delete file                              RGNVW
+// Read file                                RDNVW
+// Create folder                            RGDNV
+// Read folder                              RDNVCK
+// Shared File read                         SGD
+// Sharing related                          SRGDNVCK
+// Reshare file, but not edit               SRGD
+
+
 #define CALL_ORIGIN NSLog(@"Origin: [%@]", [[[[NSThread callStackSymbols] objectAtIndex:1] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"[]"]] objectAtIndex:1])
 
 #endif

+ 14 - 0
iOSClient/Main/CCMain.m

@@ -1487,6 +1487,13 @@
         
     } else  {
         
+        // verify permission
+        BOOL permission = [[NCUtility sharedInstance] permissionsContainsString:metadata.permissions permissions:@"RGD"]; // Update file
+        if (permission == false) {
+            [appDelegate messageNotification:@"_error_" description:@"_no_permission_modify_file_" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:k_CCErrorInternalError];
+            return;
+        }
+        
         // Plain
         
         NSString *fileNameNew = [CCUtility removeForbiddenCharactersServer:fileName];
@@ -1572,6 +1579,13 @@
 
 - (void)moveFileOrFolderMetadata:(tableMetadata *)metadata serverUrlTo:(NSString *)serverUrlTo numFile:(NSInteger)numFile ofFile:(NSInteger)ofFile
 {
+    // verify permission
+    BOOL permission = [[NCUtility sharedInstance] permissionsContainsString:metadata.permissions permissions:@"RGNVW"]; // Delete file
+    if (permission == false) {
+        [appDelegate messageNotification:@"_error_" description:@"_no_permission_modify_file_" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:k_CCErrorInternalError];
+        return;
+    }
+    
     [[OCNetworking sharedManager] readFileWithAccount:appDelegate.activeAccount serverUrl:serverUrlTo fileName:metadata.fileName completion:^(NSString *account, tableMetadata *metadataReadFile, NSString *message, NSInteger errorCode) {
         
         if (errorCode == 0 && [account isEqualToString:appDelegate.activeAccount]) {

+ 7 - 0
iOSClient/Main/NCMainCommon.swift

@@ -959,6 +959,13 @@ class NCMainCommon: NSObject, PhotoEditorDelegate, NCAudioRecorderViewController
                 
         for metadata in metadatas {
             
+            // verify permission
+            let permission = NCUtility.sharedInstance.permissionsContainsString(metadata.permissions, permissions: "RGNVW")
+            if permission == false {
+                completion(Int(k_CCErrorInternalError), "_no_permission_delete_file_")
+                return
+            }
+            
             self.appDelegate.filterocId.add(metadata.ocId)
             
             let path = metadata.serverUrl + "/" + metadata.fileName

+ 2 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -112,6 +112,8 @@
 "_wipe_account_"            = "Account wiped from server";
 "_appconfig_view_title_"    = "Account configuration in progress…";
 "_no_permission_add_file_"  = "You don't have permission to add files";
+"_no_permission_delete_file_" = "You don't have permission to delete files";
+"_no_permission_modify_file_" = "You don't have permission to modify files";
 "_request_upload_new_ver_"  = "The file has been modified, do you want to upload the new version ?";
 
 // App

+ 10 - 0
iOSClient/Utility/NCUtility.swift

@@ -535,6 +535,16 @@ class NCUtility: NSObject {
         
         return bundleDirectoryType(error: error, bundleDirectory: bundleDirectory, immPath: immPath)
     }
+    
+    @objc func permissionsContainsString(_ metadataPermissions: String, permissions: String) -> Bool {
+        
+        for char in permissions {
+            if metadataPermissions.contains(char) == false {
+                return false
+            }
+        }
+        return true
+    }
 }
 
 class ActionSheetDeleteItem: ActionSheetItem {