User role based access and moved db

This commit is contained in:
2025-10-10 12:19:43 -04:00
parent b8c545271a
commit d8fbcbbf4d
5 changed files with 56 additions and 9 deletions

2
.gitignore vendored
View File

@@ -42,6 +42,8 @@ next-env.d.ts
/media /media
/postgres-data
# Playwright # Playwright
node_modules/ node_modules/
/test-results/ /test-results/

View File

@@ -26,7 +26,7 @@ services:
env_file: env_file:
- .env - .env
volumes: volumes:
- data:/data/db - ./postgres-data:/var/lib/postgresql/data
volumes: volumes:
data: data:

View File

@@ -32,10 +32,16 @@ export default async function HomePage() {
return ( return (
<div className="home"> <div className="home">
<div className=""> <div className="content">
<h1 className='text-4xl font-bold'>{page.title}</h1> {page && (
{page.richText && ( <div>
<RichText data={page.richText}/> <h1 className='text-4xl font-bold'>{page.title}</h1>
<div>
{page.richText && (
<RichText data={page.richText}/>
)}
</div>
</div>
)} )}
<picture> <picture>
<source srcSet="https://raw.githubusercontent.com/payloadcms/payload/main/packages/ui/src/assets/payload-favicon.svg" /> <source srcSet="https://raw.githubusercontent.com/payloadcms/payload/main/packages/ui/src/assets/payload-favicon.svg" />

View File

@@ -7,14 +7,42 @@ export const Users: CollectionConfig = {
return Boolean(user?.role === "superAdmin") return Boolean(user?.role === "superAdmin")
}, },
update: ({ req: { user } }) => { update: ({ req: { user } }) => {
return Boolean(user?.role === "superAdmin" || user?.role === "admin") if (user?.role === "superAdmin" || user?.role === "admin") {
return true
}
if (user) {
return {
email: {
equals: user.email
}
}
}
return false
}, },
delete: ({ req: { user }, data }) => { delete: ({ req: { user } }) => {
return Boolean(user?.role === "superAdmin") return Boolean(user?.role === "superAdmin")
}, },
read: ({ req: { user } }) => {
if (user?.role === "superAdmin" || user?.role === "admin") {
return true
}
if (user) {
return {
email: {
equals: user.email
}
}
}
return false
},
}, },
admin: { admin: {
useAsTitle: 'email', useAsTitle: 'email',
defaultColumns: ['email', 'name', 'role']
}, },
auth: true, auth: true,
fields: [ fields: [
@@ -29,7 +57,16 @@ export const Users: CollectionConfig = {
{ label: 'User', value: 'user' }, { label: 'User', value: 'user' },
], ],
required: true, required: true,
defaultValue: 'user' defaultValue: 'user',
} access: {
update: ({ req: { user } }) => {
return Boolean(user?.role === "superAdmin")
},
}
},
{
name: 'name',
type: 'text'
},
], ],
} }

View File

@@ -122,6 +122,7 @@ export interface UserAuthOperations {
export interface User { export interface User {
id: number; id: number;
role: 'superAdmin' | 'admin' | 'user'; role: 'superAdmin' | 'admin' | 'user';
name?: string | null;
updatedAt: string; updatedAt: string;
createdAt: string; createdAt: string;
email: string; email: string;
@@ -251,6 +252,7 @@ export interface PayloadMigration {
*/ */
export interface UsersSelect<T extends boolean = true> { export interface UsersSelect<T extends boolean = true> {
role?: T; role?: T;
name?: T;
updatedAt?: T; updatedAt?: T;
createdAt?: T; createdAt?: T;
email?: T; email?: T;