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({
|
request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
url: `http://${Parse.applicationId}:${
|
url: `http://${Parse.applicationId}:${Parse.masterKey}@localhost:8378/1/jobs/myJob`,
|
||||||
Parse.masterKey
|
|
||||||
}@localhost:8378/1/jobs/myJob`,
|
|
||||||
}).then(
|
}).then(
|
||||||
() => {},
|
() => {},
|
||||||
err => {
|
err => {
|
||||||
@@ -2383,6 +2381,31 @@ describe('beforeLogin hook', () => {
|
|||||||
done();
|
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 => {
|
it('should not run beforeLogin with incorrect credentials', async done => {
|
||||||
let hit = 0;
|
let hit = 0;
|
||||||
Parse.Cloud.beforeLogin(req => {
|
Parse.Cloud.beforeLogin(req => {
|
||||||
|
|||||||
@@ -241,6 +241,8 @@ export class UsersRouter extends ClassesRouter {
|
|||||||
// Remove hidden properties.
|
// Remove hidden properties.
|
||||||
UsersRouter.removeHiddenProperties(user);
|
UsersRouter.removeHiddenProperties(user);
|
||||||
|
|
||||||
|
req.config.filesController.expandFilesInObject(req.config, user);
|
||||||
|
|
||||||
// Before login trigger; throws if failure
|
// Before login trigger; throws if failure
|
||||||
await maybeRunTrigger(
|
await maybeRunTrigger(
|
||||||
TriggerTypes.beforeLogin,
|
TriggerTypes.beforeLogin,
|
||||||
@@ -261,8 +263,6 @@ export class UsersRouter extends ClassesRouter {
|
|||||||
|
|
||||||
user.sessionToken = sessionData.sessionToken;
|
user.sessionToken = sessionData.sessionToken;
|
||||||
|
|
||||||
req.config.filesController.expandFilesInObject(req.config, user);
|
|
||||||
|
|
||||||
await createSession();
|
await createSession();
|
||||||
return { response: user };
|
return { response: user };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user