Skip to content

Commit 2b19424

Browse files
author
Dobbias Nan
committed
decoupled readUserFields from CLP and removed readUser from protectedFields before querying
1 parent 155082f commit 2b19424

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

src/Controllers/DatabaseController.js

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -207,18 +207,9 @@ const filterSensitiveData = (
207207
// replace protectedFields when using pointer-permissions
208208
const perms = schema.getClassLevelPermissions(className);
209209
if (perms) {
210-
const field =
211-
['get', 'find'].indexOf(operation) > -1
212-
? 'readUserFields'
213-
: 'writeUserFields';
214-
const fieldKeys: string[] = perms[field];
210+
const isReadOperation = ['get', 'find'].indexOf(operation) > -1;
215211

216-
if (
217-
field === 'readUserFields' &&
218-
fieldKeys &&
219-
fieldKeys.length > 0 &&
220-
perms.protectedFields
221-
) {
212+
if (isReadOperation && perms.protectedFields) {
222213
// extract protectedFields added with the pointer-permission prefix
223214
const protectedFieldsPointerPerm = Object.keys(perms.protectedFields)
224215
.filter(key => key.startsWith('userField:'))
@@ -231,7 +222,6 @@ const filterSensitiveData = (
231222

232223
// check if the object grants the current user access based on the extracted fields
233224
protectedFieldsPointerPerm.forEach(pointerPerm => {
234-
if (!fieldKeys.includes(pointerPerm.key)) return;
235225
let pointerPermIncludesUser = false;
236226
const readUserFieldValue = object[pointerPerm.key];
237227
if (readUserFieldValue) {
@@ -1587,10 +1577,12 @@ class DatabaseController {
15871577

15881578
if (aclGroup.indexOf(query.objectId) > -1) return null;
15891579

1590-
let protectedKeys = Object.values(protectedFields).reduce(
1591-
(acc, val) => acc.concat(val),
1592-
[]
1593-
); //.flat();
1580+
// remove userField keys since they are filtered after querying
1581+
let protectedKeys = Object.keys(protectedFields).reduce((acc, val) => {
1582+
if (val.startsWith('userField:')) return acc;
1583+
return acc.concat(protectedFields[val]);
1584+
}, []);
1585+
15941586
[...(auth.userRoles || [])].forEach(role => {
15951587
const fields = protectedFields[role];
15961588
if (fields) {

0 commit comments

Comments
 (0)