Access Control Setup
Type-safe role-based access control
Setup
- Add roles field to Users:
import { rolesField } from '@adsign/payload-adsign-plugin';
export const Users: CollectionConfig = {
fields: [
rolesField({
name: 'roles',
roles: [
{
label: 'Admin',
name: 'admin',
},
{
label: 'Editor',
name: 'editor',
},
],
}),
],
};- Create access control helper:
import { createAccessControl } from '@adsign/payload-adsign-plugin';
export const { role } = createAccessControl({
collection: 'users',
rolesField: 'roles',
});- Use in collections:
import { role } from './access';
export const Articles: CollectionConfig = {
access: {
read: role(['admin', 'editor', 'public']),
create: role(['admin', 'editor']),
update: role(['admin', 'editor']),
delete: role(['admin']),
},
};Special Roles
'public'- Access for everyone (including unauthenticated)'none'- No access for anyone
Field-Level Access
export const Articles: CollectionConfig = {
fields: [
{
name: 'title',
type: 'text',
},
{
name: 'internalNotes',
type: 'textarea',
access: {
read: role(['admin']),
update: role(['admin']),
},
},
],
};