62 lines
1.2 KiB
TypeScript
62 lines
1.2 KiB
TypeScript
import type { CollectionConfig } from 'payload/types'
|
|
|
|
import { admins } from './access/admins'
|
|
import adminsAndUser from './access/adminsAndUser'
|
|
import { anyone } from './access/anyone'
|
|
import { checkRole } from './access/checkRole'
|
|
import { loginAfterCreate } from './hooks/loginAfterCreate'
|
|
import { protectRoles } from './hooks/protectRoles'
|
|
|
|
export const Users: CollectionConfig = {
|
|
slug: 'users',
|
|
auth: {
|
|
tokenExpiration: 28800, // 8 hours
|
|
cookies: {
|
|
sameSite: 'none',
|
|
secure: true,
|
|
domain: process.env.COOKIE_DOMAIN,
|
|
},
|
|
},
|
|
admin: {
|
|
useAsTitle: 'email',
|
|
},
|
|
access: {
|
|
read: adminsAndUser,
|
|
create: anyone,
|
|
update: adminsAndUser,
|
|
delete: admins,
|
|
admin: ({ req: { user } }) => checkRole(['admin'], user),
|
|
},
|
|
hooks: {
|
|
afterChange: [loginAfterCreate],
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'firstName',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'lastName',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'roles',
|
|
type: 'select',
|
|
hasMany: true,
|
|
hooks: {
|
|
beforeChange: [protectRoles],
|
|
},
|
|
options: [
|
|
{
|
|
label: 'Admin',
|
|
value: 'admin',
|
|
},
|
|
{
|
|
label: 'User',
|
|
value: 'user',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|