Skip to content

Commit d9f1e00

Browse files
committed
Merge pull request #702 from simonbengtsson/before-save-login
Don't trigger beforeSave when logging in with a provider
2 parents 04491fc + 4eb9bd4 commit d9f1e00

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

spec/ParseUser.spec.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,6 +1026,32 @@ describe('Parse.User testing', () => {
10261026
});
10271027
});
10281028

1029+
it("login with provider should not call beforeSave trigger", (done) => {
1030+
var provider = getMockFacebookProvider();
1031+
Parse.User._registerAuthenticationProvider(provider);
1032+
Parse.User._logInWith("facebook", {
1033+
success: function(model) {
1034+
Parse.User.logOut();
1035+
1036+
Parse.Cloud.beforeSave(Parse.User, function(req, res) {
1037+
res.error("Before save shouldn't be called on login");
1038+
});
1039+
1040+
Parse.User._logInWith("facebook", {
1041+
success: function(innerModel) {
1042+
Parse.Cloud._removeHook('Triggers', 'beforeSave', Parse.User.className);
1043+
done();
1044+
},
1045+
error: function(model, error) {
1046+
ok(undefined, error);
1047+
Parse.Cloud._removeHook('Triggers', 'beforeSave', Parse.User.className);
1048+
done();
1049+
}
1050+
});
1051+
}
1052+
});
1053+
});
1054+
10291055
it("link with provider", (done) => {
10301056
var provider = getMockFacebookProvider();
10311057
Parse.User._registerAuthenticationProvider(provider);

src/RestWrite.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ RestWrite.prototype.execute = function() {
6767
return this.handleInstallation();
6868
}).then(() => {
6969
return this.handleSession();
70+
}).then(() => {
71+
return this.validateAuthData();
7072
}).then(() => {
7173
return this.runBeforeTrigger();
7274
}).then(() => {
7375
return this.setRequiredFieldsIfNeeded();
74-
}).then(() => {
75-
return this.validateAuthData();
7676
}).then(() => {
7777
return this.transformUser();
7878
}).then(() => {
@@ -136,6 +136,10 @@ RestWrite.prototype.validateSchema = function() {
136136
// Runs any beforeSave triggers against this operation.
137137
// Any change leads to our data being mutated.
138138
RestWrite.prototype.runBeforeTrigger = function() {
139+
if (this.response) {
140+
return;
141+
}
142+
139143
// Avoid doing any setup for triggers if there is no 'beforeSave' trigger for this class.
140144
if (!triggers.triggerExists(this.className, triggers.Types.beforeSave, this.config.applicationId)) {
141145
return Promise.resolve();

0 commit comments

Comments
 (0)