Payload Adsign Plugin

Roles Field

Select field for user roles

Usage

collections/Users/index.ts
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

OptionTypeRequiredDescription
namestringYesField name
rolesArray<{label, name}>YesAvailable roles
labelstringNoField label
conditionalRolesConditionalRole[]NoConditional 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([...]):

collections/Users/index.ts
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.

On this page