User role based access and moved db
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -42,6 +42,8 @@ next-env.d.ts
|
||||
|
||||
/media
|
||||
|
||||
/postgres-data
|
||||
|
||||
# Playwright
|
||||
node_modules/
|
||||
/test-results/
|
||||
|
||||
@@ -26,7 +26,7 @@ services:
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- data:/data/db
|
||||
- ./postgres-data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
data:
|
||||
|
||||
@@ -32,11 +32,17 @@ export default async function HomePage() {
|
||||
|
||||
return (
|
||||
<div className="home">
|
||||
<div className="">
|
||||
<div className="content">
|
||||
{page && (
|
||||
<div>
|
||||
<h1 className='text-4xl font-bold'>{page.title}</h1>
|
||||
<div>
|
||||
{page.richText && (
|
||||
<RichText data={page.richText}/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<picture>
|
||||
<source srcSet="https://raw.githubusercontent.com/payloadcms/payload/main/packages/ui/src/assets/payload-favicon.svg" />
|
||||
<Image
|
||||
|
||||
@@ -7,14 +7,42 @@ export const Users: CollectionConfig = {
|
||||
return Boolean(user?.role === "superAdmin")
|
||||
},
|
||||
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")
|
||||
},
|
||||
read: ({ req: { user } }) => {
|
||||
if (user?.role === "superAdmin" || user?.role === "admin") {
|
||||
return true
|
||||
}
|
||||
|
||||
if (user) {
|
||||
return {
|
||||
email: {
|
||||
equals: user.email
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
},
|
||||
},
|
||||
admin: {
|
||||
useAsTitle: 'email',
|
||||
defaultColumns: ['email', 'name', 'role']
|
||||
},
|
||||
auth: true,
|
||||
fields: [
|
||||
@@ -29,7 +57,16 @@ export const Users: CollectionConfig = {
|
||||
{ label: 'User', value: 'user' },
|
||||
],
|
||||
required: true,
|
||||
defaultValue: 'user'
|
||||
defaultValue: 'user',
|
||||
access: {
|
||||
update: ({ req: { user } }) => {
|
||||
return Boolean(user?.role === "superAdmin")
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'name',
|
||||
type: 'text'
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -122,6 +122,7 @@ export interface UserAuthOperations {
|
||||
export interface User {
|
||||
id: number;
|
||||
role: 'superAdmin' | 'admin' | 'user';
|
||||
name?: string | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
email: string;
|
||||
@@ -251,6 +252,7 @@ export interface PayloadMigration {
|
||||
*/
|
||||
export interface UsersSelect<T extends boolean = true> {
|
||||
role?: T;
|
||||
name?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
email?: T;
|
||||
|
||||
Reference in New Issue
Block a user