Always clear sessions when user password is updated (#3821)
* Adds repro to issue #3289 * Always clear sessions when password is updated
This commit is contained in:
committed by
Arthur Cinader
parent
9dbb89a2e4
commit
17a2d269ef
@@ -135,10 +135,7 @@ describe('ParseServerRESTController', () => {
|
|||||||
}).then(sessions => {
|
}).then(sessions => {
|
||||||
expect(sessions.length).toBe(0);
|
expect(sessions.length).toBe(0);
|
||||||
done();
|
done();
|
||||||
}, (err) => {
|
}, done.fail);
|
||||||
jfail(err);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('ensures a session token is created when passing installationId != cloud', (done) => {
|
it('ensures a session token is created when passing installationId != cloud', (done) => {
|
||||||
|
|||||||
@@ -2935,4 +2935,21 @@ describe('Parse.User testing', () => {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should revoke sessions when setting paswword with masterKey (#3289)', (done) => {
|
||||||
|
let user;
|
||||||
|
Parse.User.signUp('username', 'password')
|
||||||
|
.then((newUser) => {
|
||||||
|
user = newUser;
|
||||||
|
user.set('password', 'newPassword');
|
||||||
|
return user.save(null, {useMasterKey: true});
|
||||||
|
}).then(() => {
|
||||||
|
const query = new Parse.Query('_Session');
|
||||||
|
query.equalTo('user', user);
|
||||||
|
return query.find({useMasterKey: true});
|
||||||
|
}).then((results) => {
|
||||||
|
expect(results.length).toBe(0);
|
||||||
|
done();
|
||||||
|
}, done.fail);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -375,9 +375,12 @@ RestWrite.prototype.transformUser = function() {
|
|||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.query && !this.auth.isMaster) {
|
if (this.query) {
|
||||||
this.storage['clearSessions'] = true;
|
this.storage['clearSessions'] = true;
|
||||||
this.storage['generateNewSession'] = true;
|
// Generate a new session only if the user requested
|
||||||
|
if (!this.auth.isMaster) {
|
||||||
|
this.storage['generateNewSession'] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this._validatePasswordPolicy().then(() => {
|
return this._validatePasswordPolicy().then(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user