Skip to content

Commit c2ea62c

Browse files
committed
Fixes an issue that would let the beforeDelete be called when user has no access to the object
1 parent d2e3459 commit c2ea62c

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

spec/ParseAPI.spec.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,25 @@ describe('miscellaneous', function() {
975975
});
976976
});
977977

978+
it('test beforeDelete with locked down ACL', async () => {
979+
let called = false;
980+
Parse.Cloud.beforeDelete('GameScore', (req, res) => {
981+
called = true;
982+
res.success();
983+
});
984+
const object = new Parse.Object('GameScore');
985+
object.setACL(new Parse.ACL());
986+
await object.save();
987+
const objects = await new Parse.Query('GameScore').find();
988+
expect(objects.length).toBe(0);
989+
try {
990+
await object.destroy();
991+
} catch(e) {
992+
expect(e.code).toBe(Parse.Error.OBJECT_NOT_FOUND);
993+
}
994+
expect(called).toBe(false);
995+
});
996+
978997
it('test cloud function query parameters', (done) => {
979998
Parse.Cloud.define('echoParams', (req, res) => {
980999
res.success(req.params);

src/rest.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function del(config, auth, className, objectId) {
6767
const hasTriggers = checkTriggers(className, config, ['beforeDelete', 'afterDelete']);
6868
const hasLiveQuery = checkLiveQuery(className, config);
6969
if (hasTriggers || hasLiveQuery || className == '_Session') {
70-
return find(config, Auth.master(config), className, {objectId: objectId})
70+
return find(config, auth, className, {objectId: objectId})
7171
.then((response) => {
7272
if (response && response.results && response.results.length) {
7373
const firstResult = response.results[0];

0 commit comments

Comments
 (0)