42 lines
993 B
TypeScript
42 lines
993 B
TypeScript
import { CollectionConfig } from 'payload/types'
|
|
import { isAdmin, isAdminOrSelf } from '@payload/access/isAdmin'
|
|
import { COLLECTION_SLUG_USER } from './config'
|
|
|
|
const Users: CollectionConfig = {
|
|
slug: COLLECTION_SLUG_USER,
|
|
auth: true,
|
|
admin: {
|
|
defaultColumns: ['roles', 'email'],
|
|
useAsTitle: 'email',
|
|
},
|
|
access: {
|
|
create: isAdmin,
|
|
read: isAdminOrSelf,
|
|
update: isAdminOrSelf,
|
|
delete: isAdmin,
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'roles',
|
|
type: 'select',
|
|
options: [
|
|
{ label: 'Admin', value: 'admin' }, //CRUD, role creation
|
|
{ label: 'Editor', value: 'editor' }, //CRUD
|
|
{ label: 'User', value: 'user' }, //cRud, CRUD own entries
|
|
],
|
|
required: true,
|
|
defaultValue: 'user',
|
|
// JWT so that role is accessible from 'req.user'
|
|
saveToJWT: true,
|
|
hasMany: true,
|
|
access: {
|
|
create: isAdmin,
|
|
read: () => true,
|
|
update: isAdmin,
|
|
},
|
|
},
|
|
],
|
|
}
|
|
|
|
export default Users
|