2015-11-17 68 views
1

有人可以確認,爲了添加一個用戶到現有角色的角色需要有公共讀取& 編寫訪問?解析迅速添加新用戶到現有角色

,因爲這似乎是唯一的出路,我可以得到它的工作?

代碼來創建角色(工作正常)

    let roleACL = PFACL() 
        roleACL.setPublicReadAccess(true) 

        //roleACL.setPublicWriteAccess(true) 

        let role = PFRole(name: "ClubName", acl:roleACL) 

        role.saveInBackground() 

代碼來添加用戶表示角色(工程如果設置爲公共寫訪問)

    let QueryRole = PFRole.query() 

        QueryRole!.whereKey("name", equalTo: "ClubName") 

        QueryRole!.getFirstObjectInBackgroundWithBlock({ (roleObject: PFObject?, error: NSError?) -> Void in 

         if error == nil 

         { 

          let roleToAddUser = roleObject as! PFRole 

          roleToAddUser.users.addObject(user) 

          roleToAddUser.saveInBackground() 

          //print(roleObject) 

         } 

         else 

         { 

          print(error) 

          //print(roleObject) 

         } 


        }) 

上面的代碼工作,但我只有當公衆寫入角色的權限被設定爲真時。

這是推動我瘋了,現在

此外,如果角色是指具有公共寫訪問不使它容易改變人的角色?

如果角色不應該有公共寫訪問,則可以有人點我在正確的方向,以獲得上面的代碼沒有設置公共寫訪問的角色工作。

我得到,如果沒有對角色沒有公開寫訪問的錯誤是:對象沒有找到更新(代碼:101,版本:1.8.1)

回答

0

爲什麼不執行在雲中的所有工作代碼,而這會讓你解決讀/寫問題。這是我正在做的。

必須注意的:當雲代碼JDK設置爲「最新」下面的代碼是行不通的,我不得不將其設置爲JDK 1.5,然後redepled我的雲代碼。

Parse.Cloud.afterSave(Parse.User, function(request) { 

      Parse.Cloud.useMasterKey(); 
      var user = request.object; 
      if (user.existed()) { 
       //console.log('object exits'); 
       response.success(); 
       // console.log('********return after save'); 
       return; 
      }  

      // set ACL so that it is not public anymore 
      var acl = new Parse.ACL(user); 
      acl.setPublicReadAccess(false); 
      acl.setPublicWriteAccess(false); 
      user.setACL(acl); 
      user.save(); 
      //add user to role   
      var query = new Parse.Query(Parse.Role); 
      query.equalTo("name", "signedmember"); 
      query.first().then(function(object) { 
      if (object) { 
       object.relation("users").add(request.user); 
       object.save(null, { 
        success: function(saveObject) { 
        object.relation("users").add(request.user); 
        object.save(null, { 
         success: function(saveObject) { 
          // The object was saved successfully. 
          console.log('assigned user to role'); 
         }, 
         error: function(saveObject, error) { 
          // The save failed. 
          console.error("Failed creating role with error: " + error.code + ":"+ error.message); 
         } 
        }); 
        }, 
       }); 
      } 
     }); 
});