Fix beforeLogin trigger when user has a file (#6001)
* Fix beforeLogin trigger when user has a file * Add test case
This commit is contained in:
committed by
GitHub
parent
1df57b82e3
commit
3ede1f68b2
@@ -1546,9 +1546,7 @@ describe('Cloud Code', () => {
|
||||
|
||||
request({
|
||||
method: 'POST',
|
||||
url: `http://${Parse.applicationId}:${
|
||||
Parse.masterKey
|
||||
}@localhost:8378/1/jobs/myJob`,
|
||||
url: `http://${Parse.applicationId}:${Parse.masterKey}@localhost:8378/1/jobs/myJob`,
|
||||
}).then(
|
||||
() => {},
|
||||
err => {
|
||||
@@ -2383,6 +2381,31 @@ describe('beforeLogin hook', () => {
|
||||
done();
|
||||
});
|
||||
|
||||
it('should be able to block login if an error is thrown even if the user has a attached file', async done => {
|
||||
let hit = 0;
|
||||
Parse.Cloud.beforeLogin(req => {
|
||||
hit++;
|
||||
if (req.object.get('isBanned')) {
|
||||
throw new Error('banned account');
|
||||
}
|
||||
});
|
||||
|
||||
const user = await Parse.User.signUp('tupac', 'shakur');
|
||||
const base64 = 'V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=';
|
||||
const file = new Parse.File('myfile.txt', { base64 });
|
||||
await file.save();
|
||||
await user.save({ isBanned: true, file });
|
||||
|
||||
try {
|
||||
await Parse.User.logIn('tupac', 'shakur');
|
||||
throw new Error('should not have been logged in.');
|
||||
} catch (e) {
|
||||
expect(e.message).toBe('banned account');
|
||||
}
|
||||
expect(hit).toBe(1);
|
||||
done();
|
||||
});
|
||||
|
||||
it('should not run beforeLogin with incorrect credentials', async done => {
|
||||
let hit = 0;
|
||||
Parse.Cloud.beforeLogin(req => {
|
||||
|
||||
@@ -241,6 +241,8 @@ export class UsersRouter extends ClassesRouter {
|
||||
// Remove hidden properties.
|
||||
UsersRouter.removeHiddenProperties(user);
|
||||
|
||||
req.config.filesController.expandFilesInObject(req.config, user);
|
||||
|
||||
// Before login trigger; throws if failure
|
||||
await maybeRunTrigger(
|
||||
TriggerTypes.beforeLogin,
|
||||
@@ -261,8 +263,6 @@ export class UsersRouter extends ClassesRouter {
|
||||
|
||||
user.sessionToken = sessionData.sessionToken;
|
||||
|
||||
req.config.filesController.expandFilesInObject(req.config, user);
|
||||
|
||||
await createSession();
|
||||
return { response: user };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user