Skip to content

Commit e506784

Browse files
committed
Merge pull request #1132 from ParsePlatform/flovilmart.hotfixCLPAssignments
Generates default CLP, freezes objects
2 parents cc6c3f4 + 5d19c4a commit e506784

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/Schema.js

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
var Parse = require('parse/node').Parse;
1818
var transform = require('./transform');
1919

20-
var defaultColumns = {
20+
const defaultColumns = Object.freeze({
2121
// Contain the default columns for every parse object type (except _Join collection)
2222
_Default: {
2323
"objectId": {type:'String'},
@@ -84,14 +84,14 @@ var defaultColumns = {
8484
"sentPerType": {type:'Object'},
8585
"failedPerType":{type:'Object'},
8686
}
87-
};
87+
});
8888

89-
var requiredColumns = {
89+
const requiredColumns = Object.freeze({
9090
_Product: ["productIdentifier", "icon", "order", "title", "subtitle"],
9191
_Role: ["name", "ACL"]
92-
}
92+
});
9393

94-
const systemClasses = ['_User', '_Installation', '_Role', '_Session', '_Product'];
94+
const systemClasses = Object.freeze(['_User', '_Installation', '_Role', '_Session', '_Product']);
9595

9696
// 10 alpha numberic chars + uppercase
9797
const userIdRegex = /^[a-zA-Z0-9]{10}$/;
@@ -100,7 +100,7 @@ const roleRegex = /^role:.*/;
100100
// * permission
101101
const publicRegex = /^\*$/
102102

103-
const permissionKeyRegex = [userIdRegex, roleRegex, publicRegex];
103+
const permissionKeyRegex = Object.freeze([userIdRegex, roleRegex, publicRegex]);
104104

105105
function verifyPermissionKey(key) {
106106
let result = permissionKeyRegex.reduce((isGood, regEx) => {
@@ -112,13 +112,15 @@ function verifyPermissionKey(key) {
112112
}
113113
}
114114

115-
let CLPValidKeys = ['find', 'get', 'create', 'update', 'delete', 'addField'];
116-
let DefaultClassLevelPermissions = CLPValidKeys.reduce((perms, key) => {
115+
const CLPValidKeys = Object.freeze(['find', 'get', 'create', 'update', 'delete', 'addField']);
116+
let DefaultClassLevelPermissions = () => {
117+
return CLPValidKeys.reduce((perms, key) => {
117118
perms[key] = {
118119
'*': true
119120
};
120121
return perms;
121122
}, {});
123+
}
122124

123125
function validateCLP(perms) {
124126
if (!perms) {
@@ -899,21 +901,21 @@ function mongoSchemaToSchemaAPIResponse(schema) {
899901
fields: mongoSchemaAPIResponseFields(schema),
900902
};
901903

902-
let classLevelPermissions = DefaultClassLevelPermissions;
904+
let classLevelPermissions = DefaultClassLevelPermissions();
903905
if (schema._metadata && schema._metadata.class_permissions) {
904-
classLevelPermissions = Object.assign(classLevelPermissions, schema._metadata.class_permissions);
906+
classLevelPermissions = Object.assign({}, classLevelPermissions, schema._metadata.class_permissions);
905907
}
906908
result.classLevelPermissions = classLevelPermissions;
907909
return result;
908910
}
909911

910-
module.exports = {
911-
load: load,
912-
classNameIsValid: classNameIsValid,
913-
invalidClassNameMessage: invalidClassNameMessage,
914-
schemaAPITypeToMongoFieldType: schemaAPITypeToMongoFieldType,
915-
buildMergedSchemaObject: buildMergedSchemaObject,
916-
mongoFieldTypeToSchemaAPIType: mongoFieldTypeToSchemaAPIType,
912+
export {
913+
load,
914+
classNameIsValid,
915+
invalidClassNameMessage,
916+
schemaAPITypeToMongoFieldType,
917+
buildMergedSchemaObject,
918+
mongoFieldTypeToSchemaAPIType,
917919
mongoSchemaToSchemaAPIResponse,
918920
systemClasses,
919921
};

0 commit comments

Comments
 (0)