Roles Field
Select field for user roles
Usage
import { rolesField } from '@adsign/payload-adsign-plugin';
export const Users: CollectionConfig = {
fields: [
rolesField({
name: 'roles',
label: 'User Roles',
roles: [
{
label: 'Admin',
name: 'admin',
},
{
label: 'Editor',
name: 'editor',
},
],
}),
],
};Options
| Option | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Field name |
roles | Array<{label, name}> | Yes | Available roles |
label | string | No | Field label |
conditionalRoles | ConditionalRole[] | No | Conditional roles to include in the generated type |
Validation
Saving a role that isn't in roles fails validation, e.g. ['superuser'] or a typo like ['admn'].
With Conditional Roles
Pass the same conditionalRoles you give createAccessControl, so they're part of the generated type and type-check in role([...]):
import { conditionalRoles } from '../access';
rolesField({
name: 'roles',
roles: [
{
label: 'Admin',
name: 'admin',
},
],
conditionalRoles,
});// Generated type
roles?: ('admin' | 'author')[] | null;Conditional roles aren't shown as options in the admin UI, and saving one on a user fails validation. They're decided per document, not stored on the user.
With Access Control
See Access Control Setup for using this field with role-based access control.