@keystone-next/fields-authed-relationship-legacy
v1.0.19
Published
KeystoneJS AuthedRelationship Field Type
Downloads
7
Readme
AuthedRelationship
An extension on the Relationship
field which is automatically set to the
currently authenticated item during a create mutation.
Great for setting fields like Post.author
or Product.owner
, etc.
Usage
Basic
const { AuthedRelationship } = require('@keystone-next/fields-authed-relationship-legacy');
const { Text } = require('@keystone-next/fields-legacy');
keystone.createList('User', {
fields: {
name: { type: Text },
},
});
keystone.createList('Post', {
fields: {
// Automatically set to the currently logged in user on create
author: {
type: AuthedRelationship,
ref: 'User',
},
},
});
Complete example
This example allows "admins" to overwrite the value
const { AuthedRelationship } = require('@keystone-next/fields-authed-relationship-legacy');
const { Checkbox, Text } = require('@keystone-next/fields-legacy');
keystone.createList('User', {
fields: {
name: { type: Text },
isAdmin: { type: Checkbox, default: false },
},
});
const isAdmin = ({ authentication: { item } }) => !!item && item.isAdmin;
keystone.createList('Post', {
fields: {
author: {
type: AuthedRelationship,
ref: 'User',
access: {
create: isAdmin,
update: isAdmin,
},
},
},
});
Config
| Option | Type | Default | Description |
| ------------ | --------- | ------- | -------------------------------- |
| isRequired
| Boolean
| false
| Does this field require a value? |
Differences from Relationship
- No
many: true
. This field is purely for a to-single relationship and cannot be used to refer to more than one item. - Cannot specify a
defaultValue
. The entire purpose of this field is to provide that method for you. - When setting
isRequired
, it will be checked during the "default value" phase of the mutation lifecycle. This means it may throw an error earlier than other fields - Default access control set to
{ create: false, read: true, update: false }
- Access control does not respect any Keystone-level
defaultAccess