-
Type: Task
-
Resolution: Cannot Reproduce
-
Priority: Unknown
-
None
-
Affects Version/s: None
-
Component/s: None
I am trying to add a member with permissions to a shared realm between users. Currently I have an adminUser [SyncUser] object from which I am accessing permissionManager. When I try to set the permissions on the newly created user in Realm, I am not getting any response back in the call back.
Language : Kotlin
realm {
syncEnabled = true
}
classpath "io.realm:realm-gradle-plugin:4.3.1"
fun saveToUserAccount(strEmail: String, password: String) { userName = strEmail memberView.showProgress(R.string.loading) encryptedPasswordByteArray = (encryptKey(password, strEmail)) encryptedPassword = Arrays.toString(convertToUInt8IntArray(encryptedPasswordByteArray)) val credentials = SyncCredentials.usernamePassword(strEmail, encryptedPassword, true) SyncUser.loginAsync(credentials, Constants.SERVER_IP, this) } override fun onSuccess(result: SyncUser?) { mCurrentUser = result //Save user data to realm val userMap = HashMap<String, Any>() //let myDict:NSDictionary = ["user_id": userKey, "admin_id": userKey, "email": hashUserName, "hash": finalHashKey, "is_admin": true, "secure_key":secureKey] userMap.put("user_id", result!!.identity) userMap.put("admin_id", adminId) userMap.put("email", userName) userMap.put("hash", encryptedPassword) userMap.put("is_admin", false) val encryptedPrivateKey = encryptAESKeyPassword(NineBxApplication.getPreferences().privateKey!!, encryptedPasswordByteArray) //AppLogger.d(TAG, "Encrypted Key : " + encryptedPrivateKey) userMap.put("secure_key", encryptedPrivateKey) //AppLogger.d(TAG, "UserMap : " + userMap) NineBxApplication.getUserAPI()!!.postUserDetails(userMap) .subscribeOn(Schedulers.io()) .observeOn(io.reactivex.android.schedulers.AndroidSchedulers.mainThread()) .subscribe(getSignupResponse()) } private fun getSignupResponse(): Observer<ResponseBody> { return object : Observer<ResponseBody> { override fun onNext(t: ResponseBody) { //User details saved successfully - save user object to realm AppLogger.d(TAG, "Successfully saved userMap : " + String(t.bytes())) //memberView.onMemberSignup(mCurrentUser!!) //setUserPermissions() } override fun onError(e: Throwable) { memberView.hideProgress() } override fun onComplete() { AppLogger.d(TAG, "GetUserAPI : onComplete") //memberView.hideProgress() setUserPermissions() } override fun onSubscribe(d: Disposable) { mCompositeDisposable.add(d) } } } private fun setUserPermissions() { AppLogger.d(TAG, "setUserPermissions : start") val permissionManager = adminUser.permissionManager // Create request val condition = UserCondition.userId(mCurrentUser!!.identity) val accessLevel = AccessLevel.WRITE val request = PermissionRequest(condition, "/~/users" , accessLevel) AppLogger.d(TAG, "setUserPermissions : details : $condition : request : $request") permissionManager.applyPermissions(request, object : PermissionManager.ApplyPermissionsCallback { override fun onSuccess() { memberView.onMemberSignup(mCurrentUser!!) memberView.hideProgress() } override fun onError(error: ObjectServerError) { if( error.errorMessage != null ) AppLogger.d(TAG, "setUserPermissions : onError : " + error.errorMessage) error.printStackTrace() } }) }
Neither success nor error is called.
Help required @cmelchior