added tons of features
This commit is contained in:
52
lib/permission/index.ts
Normal file
52
lib/permission/index.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import {Session} from '@auth/core/types'
|
||||
import {UserRole} from '@prisma/client'
|
||||
import 'server-only'
|
||||
|
||||
//import SUPERVISOR from '@/lib/permission/roles/supervisor'
|
||||
|
||||
export interface SessionUser {
|
||||
id: string
|
||||
name: string
|
||||
email: string
|
||||
image: string | null
|
||||
isOauth: boolean
|
||||
provider: string | null
|
||||
role: UserRole
|
||||
profileId: number | null
|
||||
username: string | null
|
||||
}
|
||||
|
||||
export interface SingedInSession extends Session {
|
||||
user: SessionUser
|
||||
}
|
||||
|
||||
export enum Access {
|
||||
Admin = 'accessAdmin',
|
||||
Cabinet = 'accessCabinet'
|
||||
}
|
||||
|
||||
export enum Update {
|
||||
Category = 'editCategory',
|
||||
Product = 'editProduct'
|
||||
}
|
||||
|
||||
export enum Delete {
|
||||
Category = 'deleteCategory',
|
||||
Product = 'deleteProduct'
|
||||
}
|
||||
|
||||
export type Permission = Access | Delete | Update
|
||||
|
||||
export type AllRolesPermissions = {
|
||||
SUPERVISOR: Permission[]
|
||||
CUSTOMER: Permission[]
|
||||
}
|
||||
|
||||
export const PERMISSIONS: AllRolesPermissions = {
|
||||
SUPERVISOR: [
|
||||
...Object.values(Access),
|
||||
...Object.values(Update),
|
||||
...Object.values(Delete)
|
||||
],
|
||||
CUSTOMER: [Access.Cabinet]
|
||||
} as const
|
||||
1
lib/permission/roles/index.ts
Normal file
1
lib/permission/roles/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export {default as SUPERVISOR} from './supervisor'
|
||||
7
lib/permission/roles/supervisor.ts
Normal file
7
lib/permission/roles/supervisor.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import {Access, Delete, Permission, Update} from '@/lib/permission'
|
||||
|
||||
export default [
|
||||
...Object.values(Access),
|
||||
...Object.values(Update),
|
||||
...Object.values(Delete)
|
||||
]
|
||||
Reference in New Issue
Block a user