Reputation: 4074
I am attempting to apply field level access logic in KeystoneJS, as per these instructions.
The following hides a field fieldName
from the admin UI:
fieldName: {
type: Text,
access: {
read: false,
update: false,
create: false
},
},
But the field is not hidden from the admin UI if I use an imperative approach. See below, which I would expect to produce the same result as the static approach above:
fieldName: {
type: Text,
access: {
read: ({ authentication: { item, listKey } }) => {
return false;
},
update: ({ authentication: { item, listKey } }) => {
return false;
},
create: ({ authentication: { item, listKey } }) => {
return false;
}
},
},
Am I missing something or is this a bug?
Upvotes: 0
Views: 46
Reputation: 1138
Imperative approach uses a function which can not be transferred to the client side.
Keystone uses maybe true
false
value for this. this means !!(() => {})
becomes true when generating admin ui metadata for fields in list.
there is a note in the section "Granular Imperative Boolean" which explains that these fields indeed gets included in graphql and ui but are excluded during execution.
Upvotes: 1