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 = {};