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
|
/media
|
||||||
|
|
||||||
|
/postgres-data
|
||||||
|
|
||||||
# Playwright
|
# Playwright
|
||||||
node_modules/
|
node_modules/
|
||||||
/test-results/
|
/test-results/
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -32,11 +32,17 @@ export default async function HomePage() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="home">
|
<div className="home">
|
||||||
<div className="">
|
<div className="content">
|
||||||
|
{page && (
|
||||||
|
<div>
|
||||||
<h1 className='text-4xl font-bold'>{page.title}</h1>
|
<h1 className='text-4xl font-bold'>{page.title}</h1>
|
||||||
|
<div>
|
||||||
{page.richText && (
|
{page.richText && (
|
||||||
<RichText data={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" />
|
||||||
<Image
|
<Image
|
||||||
|
|||||||
@@ -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'
|
||||||
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user