From b261904d0337247f872d41e15323b45dcdcb9c19 Mon Sep 17 00:00:00 2001 From: Musa Yassin-Fort Date: Tue, 23 Jun 2020 09:13:35 -0400 Subject: [PATCH 1/3] Fix pointer CLPs --- .../PermissionsDialog.react.js | 65 +++++++++++-------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/src/components/PermissionsDialog/PermissionsDialog.react.js b/src/components/PermissionsDialog/PermissionsDialog.react.js index 440c864e57..491e124707 100644 --- a/src/components/PermissionsDialog/PermissionsDialog.react.js +++ b/src/components/PermissionsDialog/PermissionsDialog.react.js @@ -534,7 +534,7 @@ export default class PermissionsDialog extends React.Component { // hide suggestions to avoid ugly footer overlap this.refEntry.current.setHidden(hidden); // also show indicator when input is not visible - this.refScrollHint.current.toggleActive(hidden); + // this.refScrollHint.current.toggleActive(hidden); }; this.observer = new IntersectionObserver(callback, { @@ -589,13 +589,13 @@ export default class PermissionsDialog extends React.Component { perms.delete = perms.delete || Map(); perms.addField = perms.addField || Map(); - (pointerPermsSubset.get = perms.get.pointerFields || []), - (pointerPermsSubset.find = perms.find.pointerFields || []), - (pointerPermsSubset.count = perms.count.pointerFields || []), - (pointerPermsSubset.create = perms.create.pointerFields || []), - (pointerPermsSubset.update = perms.update.pointerFields || []), - (pointerPermsSubset.delete = perms.delete.pointerFields || []), - (pointerPermsSubset.addField = perms.addField.pointerFields || []); + (pointerPermsSubset.get = permissions.get.pointerFields || []), + (pointerPermsSubset.find = permissions.find.pointerFields || []), + (pointerPermsSubset.count = permissions.count.pointerFields || []), + (pointerPermsSubset.create = permissions.create.pointerFields || []), + (pointerPermsSubset.update = permissions.update.pointerFields || []), + (pointerPermsSubset.delete = permissions.delete.pointerFields || []), + (pointerPermsSubset.addField = permissions.addField.pointerFields || []); } let pointerPerms = {}; @@ -764,6 +764,7 @@ export default class PermissionsDialog extends React.Component { let nextKeys; let nextEntryTypes; let nextPerms = this.state.perms; + let nextPointerPerms = this.state.pointerPerms; if (next.user || next.role) { id = next.user ? next.user.id : next.role.id; @@ -791,17 +792,32 @@ export default class PermissionsDialog extends React.Component { } // create new permissions - if (this.props.advanced) { - nextPerms = nextPerms.setIn(['get', key], true); - nextPerms = nextPerms.setIn(['find', key], true); - nextPerms = nextPerms.setIn(['count', key], true); - nextPerms = nextPerms.setIn(['create', key], true); - nextPerms = nextPerms.setIn(['update', key], true); - nextPerms = nextPerms.setIn(['delete', key], true); - nextPerms = nextPerms.setIn(['addField', key], true); + if (next.pointer) { + if (this.props.advanced) { + nextPointerPerms = nextPointerPerms.setIn([entry, 'get'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'find'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'count'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'create'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'update'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'delete'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'addField'], true) + } else { + nextPointerPerms = nextPointerPerms.setIn([entry, 'read'], true) + nextPointerPerms = nextPointerPerms.setIn([entry, 'write'], true) + } } else { - nextPerms = nextPerms.setIn(['read', key], true); - nextPerms = nextPerms.setIn(['write', key], true); + if (this.props.advanced) { + nextPerms = nextPerms.setIn(['get', key], true); + nextPerms = nextPerms.setIn(['find', key], true); + nextPerms = nextPerms.setIn(['count', key], true); + nextPerms = nextPerms.setIn(['create', key], true); + nextPerms = nextPerms.setIn(['update', key], true); + nextPerms = nextPerms.setIn(['delete', key], true); + nextPerms = nextPerms.setIn(['addField', key], true); + } else { + nextPerms = nextPerms.setIn(['read', key], true); + nextPerms = nextPerms.setIn(['write', key], true); + } } nextKeys = this.state.newKeys.concat([key]); @@ -810,6 +826,7 @@ export default class PermissionsDialog extends React.Component { return this.setState( { perms: nextPerms, + pointerPerms: nextPointerPerms, newKeys: nextKeys, entryTypes: nextEntryTypes, newEntry: '', @@ -911,7 +928,7 @@ export default class PermissionsDialog extends React.Component { return; } if (k === 'requiresAuthentication' && !v){ - // only acceppt requiresAuthentication with true + // only acceppt requiresAuthentication with true return } if (v) { @@ -919,7 +936,6 @@ export default class PermissionsDialog extends React.Component { } }); }); - let readUserFields = []; let writeUserFields = []; this.state.pointerPerms.forEach((perms, key) => { @@ -929,7 +945,6 @@ export default class PermissionsDialog extends React.Component { if (perms.get('write')) { writeUserFields.push(key); } - fields.forEach(op => { if (perms.get(op)) { if (!output[op].pointerFields) { @@ -964,7 +979,7 @@ export default class PermissionsDialog extends React.Component { // types is immutable.js Map const type = (types && types.get(key)) || {}; - let pointer; + let pointer = this.state.pointerPerms.has(key); let label = {key}; if (type.user) { @@ -996,7 +1011,7 @@ export default class PermissionsDialog extends React.Component {

); - } else if (type.pointer) { + } else if (pointer) { // get class info from schema let { type, targetClass } = columns[key]; @@ -1153,7 +1168,6 @@ export default class PermissionsDialog extends React.Component { } else { placeholderText = 'Role or User\u2026'; } - return ( ) : null} - {this.state.keys .slice(this.props.advanced ? 2 : 1) .map(key => @@ -1238,7 +1251,7 @@ export default class PermissionsDialog extends React.Component { )} {this.props.advanced ? this.state.pointers.map(pointer => - this.renderRow(pointer, true) + this.renderRow(pointer, this.state.columns) ) : null} {this.state.newKeys.map(key => From 14068605e966342e759296df324eb7c84f27e5d7 Mon Sep 17 00:00:00 2001 From: Musa Yassin-Fort Date: Tue, 23 Jun 2020 12:37:55 -0400 Subject: [PATCH 2/3] Restore removed new lines --- src/components/PermissionsDialog/PermissionsDialog.react.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/PermissionsDialog/PermissionsDialog.react.js b/src/components/PermissionsDialog/PermissionsDialog.react.js index 491e124707..97962d2e23 100644 --- a/src/components/PermissionsDialog/PermissionsDialog.react.js +++ b/src/components/PermissionsDialog/PermissionsDialog.react.js @@ -936,6 +936,7 @@ export default class PermissionsDialog extends React.Component { } }); }); + let readUserFields = []; let writeUserFields = []; this.state.pointerPerms.forEach((perms, key) => { @@ -945,6 +946,7 @@ export default class PermissionsDialog extends React.Component { if (perms.get('write')) { writeUserFields.push(key); } + fields.forEach(op => { if (perms.get(op)) { if (!output[op].pointerFields) { @@ -1168,6 +1170,7 @@ export default class PermissionsDialog extends React.Component { } else { placeholderText = 'Role or User\u2026'; } + return ( ) : null} + {this.state.keys .slice(this.props.advanced ? 2 : 1) .map(key => From 026449648b197a2a3f5a59c69a3e5defbb588fd6 Mon Sep 17 00:00:00 2001 From: Musa Yassin-Fort Date: Tue, 23 Jun 2020 13:24:49 -0400 Subject: [PATCH 3/3] Add checks --- .../PermissionsDialog/PermissionsDialog.react.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/PermissionsDialog/PermissionsDialog.react.js b/src/components/PermissionsDialog/PermissionsDialog.react.js index 97962d2e23..cd06a20bdb 100644 --- a/src/components/PermissionsDialog/PermissionsDialog.react.js +++ b/src/components/PermissionsDialog/PermissionsDialog.react.js @@ -589,13 +589,15 @@ export default class PermissionsDialog extends React.Component { perms.delete = perms.delete || Map(); perms.addField = perms.addField || Map(); - (pointerPermsSubset.get = permissions.get.pointerFields || []), - (pointerPermsSubset.find = permissions.find.pointerFields || []), - (pointerPermsSubset.count = permissions.count.pointerFields || []), - (pointerPermsSubset.create = permissions.create.pointerFields || []), - (pointerPermsSubset.update = permissions.update.pointerFields || []), - (pointerPermsSubset.delete = permissions.delete.pointerFields || []), - (pointerPermsSubset.addField = permissions.addField.pointerFields || []); + // The double check is necessary because the permissions object seems to be empty when accessing the CLP section + // if the class was recently created. + (pointerPermsSubset.get = permissions.get && permissions.get.pointerFields || []), + (pointerPermsSubset.find = permissions.find && permissions.find.pointerFields || []), + (pointerPermsSubset.count = permissions.count && permissions.count.pointerFields || []), + (pointerPermsSubset.create = permissions.create && permissions.create.pointerFields || []), + (pointerPermsSubset.update = permissions.update && permissions.update.pointerFields || []), + (pointerPermsSubset.delete = permissions.delete && permissions.delete.pointerFields || []), + (pointerPermsSubset.addField = permissions.addField && permissions.addField.pointerFields || []); } let pointerPerms = {};