Skip to content

Commit b1a9536

Browse files
committed
Merge pull request #438 from flovilmart/flovilmart.fix-default_User.metadata
Adds locked down ACL on _User
2 parents eace10f + 20eca71 commit b1a9536

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

spec/ParseUser.spec.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@
88
var request = require('request');
99
var passwordCrypto = require('../src/password');
1010

11+
function verifyACL(user) {
12+
const ACL = user.getACL();
13+
expect(ACL.getReadAccess(user)).toBe(true);
14+
expect(ACL.getWriteAccess(user)).toBe(true);
15+
expect(ACL.getPublicReadAccess()).toBe(true);
16+
expect(ACL.getPublicWriteAccess()).toBe(false);
17+
const perms = ACL.permissionsById;
18+
expect(Object.keys(perms).length).toBe(2);
19+
expect(perms[user.id].read).toBe(true);
20+
expect(perms[user.id].write).toBe(true);
21+
expect(perms['*'].read).toBe(true);
22+
expect(perms['*'].write).not.toBe(true);
23+
}
24+
1125
describe('Parse.User testing', () => {
1226
it("user sign up class method", (done) => {
1327
Parse.User.signUp("asdf", "zxcv", null, {
@@ -57,6 +71,7 @@ describe('Parse.User testing', () => {
5771
Parse.User.logIn("asdf", "zxcv", {
5872
success: function(user) {
5973
equal(user.get("username"), "asdf");
74+
verifyACL(user);
6075
done();
6176
}
6277
});
@@ -1352,7 +1367,7 @@ describe('Parse.User testing', () => {
13521367
var b = JSON.parse(body);
13531368
expect(b.results.length).toEqual(1);
13541369
var user = b.results[0];
1355-
expect(Object.keys(user).length).toEqual(6);
1370+
expect(Object.keys(user).length).toEqual(7);
13561371
done();
13571372
});
13581373
});

src/RestWrite.js

+7
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,13 @@ RestWrite.prototype.runDatabaseOperation = function() {
655655
this.response.updatedAt = this.updatedAt;
656656
});
657657
} else {
658+
// Set the default ACL for the new _User
659+
if (!this.data.ACL && this.className === '_User') {
660+
var ACL = {};
661+
ACL[this.data.objectId] = { read: true, write: true };
662+
ACL['*'] = { read: true, write: false };
663+
this.data.ACL = ACL;
664+
}
658665
// Run a create
659666
return this.config.database.create(this.className, this.data, options)
660667
.then(() => {

0 commit comments

Comments
 (0)