Skip to content

Commit 17a2d26

Browse files
flovilmartArthur Cinader
authored and
Arthur Cinader
committed
Always clear sessions when user password is updated (#3821)
* Adds repro to issue #3289 * Always clear sessions when password is updated
1 parent 9dbb89a commit 17a2d26

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

Diff for: spec/ParseServerRESTController.spec.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,7 @@ describe('ParseServerRESTController', () => {
135135
}).then(sessions => {
136136
expect(sessions.length).toBe(0);
137137
done();
138-
}, (err) => {
139-
jfail(err);
140-
done();
141-
});
138+
}, done.fail);
142139
});
143140

144141
it('ensures a session token is created when passing installationId != cloud', (done) => {

Diff for: spec/ParseUser.spec.js

+17
Original file line numberDiff line numberDiff line change
@@ -2935,4 +2935,21 @@ describe('Parse.User testing', () => {
29352935
done();
29362936
});
29372937
});
2938+
2939+
it('should revoke sessions when setting paswword with masterKey (#3289)', (done) => {
2940+
let user;
2941+
Parse.User.signUp('username', 'password')
2942+
.then((newUser) => {
2943+
user = newUser;
2944+
user.set('password', 'newPassword');
2945+
return user.save(null, {useMasterKey: true});
2946+
}).then(() => {
2947+
const query = new Parse.Query('_Session');
2948+
query.equalTo('user', user);
2949+
return query.find({useMasterKey: true});
2950+
}).then((results) => {
2951+
expect(results.length).toBe(0);
2952+
done();
2953+
}, done.fail);
2954+
});
29382955
});

Diff for: src/RestWrite.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,12 @@ RestWrite.prototype.transformUser = function() {
375375
return Promise.resolve();
376376
}
377377

378-
if (this.query && !this.auth.isMaster) {
378+
if (this.query) {
379379
this.storage['clearSessions'] = true;
380-
this.storage['generateNewSession'] = true;
380+
// Generate a new session only if the user requested
381+
if (!this.auth.isMaster) {
382+
this.storage['generateNewSession'] = true;
383+
}
381384
}
382385

383386
return this._validatePasswordPolicy().then(() => {

0 commit comments

Comments
 (0)