-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Bug in saving new users via Cloud Code #1495
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Session token bug --> #1497 |
Just investigate that one and:
all 3 make calls to the /users endpoints, so we can't really infer anything from that. Another option would be to skip the session creation when using |
That sounds good. Would it apply to all SDKs that are connected with the masterkey as well? |
Yeah REST, node etc... |
@drew-gross is that reasonable? Or maybe we can check the request headers and make sure we don't generate a Session Token for Cloud Code, nor nodejs, nor REST etc... I tend to think the masterKey is a workaround. We could use the User-Agent: https://github.com/ParsePlatform/Parse-SDK-JS/blob/master/src/RESTController.js#L129 |
Checking IS_NODE seems like a good solution. Sometime you want to make requests as a specific user even in Cloud Code so having that work as expected and not create session tokens is important. |
ok so I'll check for the User-Agent somewhere |
@drew-gross once again, we face an issue with parse.js being single minded. I overrode the InstallationsController to return 'parse-server' as the installationId (as it is in regular parse.com's cloud code). The problem being that it breaks all of our tests. we could overcome that maybe by running the cloud endpoint in their own VM... |
Which tests does it break and why? If |
Is there a work around for this I can write myself? I am running an app that uses a slightly modified version of AnyPhone and all my users are created and log in through Cloud Code. This is the final barrier between my full migration off of parse.com. |
* Adds ParseServerRESTController experimental support * Adds basic tests * Do not create sessionToken when requests come from cloudCode #1495
@flovilmart we have Google login implementation with Cloud code in Android. but now with the revocable sessions we are not able get the session token from cloud code when user trying to login/signup. then we have added bellow code: var session; This will return Session token from _Session class but when user logged out and trying to login again the is no data in Session class as session get deleted after user logged out. Now i am trying http://stackoverflow.com/a/36656209/3758024 this approach and getting error "can not modify user XXXXX". |
@gopal-aressindia did you find a solution for this? I am trying to get back to this issue for a project migration before the upcoming deadline |
@pbmarcano No, I don't find any solution on this. I have changed this process and now removed cloud code and using the Third Party OAuth |
@pbmarcano seems AnyPhone link cannot be reached any more, can you still access it? I just built some prototype for phone based login on self-hosted parse server, would be helpful to see original code repo to get the whole flow right |
@flovilmart I tried let user = new Parse.User()
user.save(attrs, {userMasterKey: true}); And then I tried to do cloud
If I get rid of I called the same cloud function with same parameters, just changed the env setting to start parse server. Not sure if need to enable this, but duplicate session would exist without it |
yoi should probably not call login from cloud code. Sessions are tied to the installationId. Also, i believe you can pass the installationId that was passed to the cloud function call to the logIn options object https://github.com/ParsePlatform/Parse-SDK-JS/blob/master/src/ParseUser.js#L429 This will effectively create a session for the installationId that you gave. But like I said, you should not call logIn in Cloud Code as it doesn't really make sense. |
Great, thanks for the explanation. I'll probably rethink the login flow again. |
@flovilmart with a PR submitted (and merged) is there anything else that needs to be squared away for the original issue here? |
Nope! Everything is good, we need to setup direct access mainline at one point . |
When saving a new PFUser on iOS, the SDK(?) throws this error:
Caught "NSInternalInconsistencyException" with reason "User cannot be saved unless they are already signed up. Call signUp first."
When saving a new PFUser via Cloud Code, it does not throw that error but simply mimics a "signUp", which creates a session token for the server... in Cloud Code! (actually, read #3 as this may be a bug with the pfuser handling)
For sake of flexibility and consistency (with PFObjects), I think there should be an option to "save" a PFUser without having a session token created, or restricting (iOS) apps to always use PFUser.signUp. There are many use-cases for such a feature, and I feel that it is a meaningless restriction.
Personal use-case: I have some special logic to replace the standard "signUp" flow, which has me creating a PFUser via Cloud Code + MasterKey. But with how the "save" function is behaving, it's creating a session token for the server!
Ref #1490
The text was updated successfully, but these errors were encountered: