Ensure the ACL is always part of the payload when using select (#4967)

* Ensure the ACL is always part of the payload when using select

* Update changelog

* fix for PG
This commit is contained in:
Florent Vilmart
2018-08-15 09:48:32 -04:00
committed by GitHub
parent af45b4df74
commit bf9fdb41ed
5 changed files with 53 additions and 6 deletions

View File

@@ -470,7 +470,12 @@ export class MongoStorageAdapter implements StorageAdapter {
const mongoWhere = transformWhere(className, query, schema);
const mongoSort = _.mapKeys(sort, (value, fieldName) => transformKey(className, fieldName, schema));
const mongoKeys = _.reduce(keys, (memo, key) => {
memo[transformKey(className, key, schema)] = 1;
if (key === 'ACL') {
memo['_rperm'] = 1;
memo['_wperm'] = 1;
} else {
memo[transformKey(className, key, schema)] = 1;
}
return memo;
}, {});

View File

@@ -1437,9 +1437,16 @@ export class PostgresStorageAdapter implements StorageAdapter {
let columns = '*';
if (keys) {
// Exclude empty keys
keys = keys.filter((key) => {
return key.length > 0;
});
// Replace ACL by it's keys
keys = keys.reduce((memo, key) => {
if (key === 'ACL') {
memo.push('_rperm');
memo.push('_wperm');
} else if (key.length > 0) {
memo.push(key);
}
return memo;
}, []);
columns = keys.map((key, index) => {
if (key === '$score') {
return `ts_rank_cd(to_tsvector($${2}, $${3}:name), to_tsquery($${4}, $${5}), 32) as score`;

View File

@@ -5,7 +5,7 @@ var SchemaController = require('./Controllers/SchemaController');
var Parse = require('parse/node').Parse;
const triggers = require('./triggers');
const AlwaysSelectedKeys = ['objectId', 'createdAt', 'updatedAt'];
const AlwaysSelectedKeys = ['objectId', 'createdAt', 'updatedAt', 'ACL'];
// restOptions can include:
// skip
// limit