KeystoneJS AuthedRelationship Field Type
> This is the last active development release of this package as Keystone 5 is now in a 6 to 12 month active maintenance phase. For more information please read our Keystone 5 and beyond post.
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.
``js
const { AuthedRelationship } = require('@keystonejs/fields-authed-relationship');
const { Text } = require('@keystonejs/fields');
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',
},
},
});
`
This example allows "admins" to overwrite the value
`js
const { AuthedRelationship } = require('@keystonejs/fields-authed-relationship');
const { Checkbox, Text } = require('@keystonejs/fields');
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,
},
},
},
});
`
| Option | Type | Default | Description |
| ------------ | --------- | ------- | -------------------------------- |
| isRequired | Boolean | false | Does this field require a value? |
- No many: true. This field is purely for a to-single relationship and cannotdefaultValue
be used to refer to more than one item.
- Cannot specify a . The entire purpose of this field is toisRequired
provide that method for you.
- When setting , it will be checked during the "default value" phase{ create: false, read: true, update: false }
of the mutation lifecycle. This means it may throw an error earlier than other
fields
- Default access control set to defaultAccess`
- Access control _does not_ respect any Keystone-level