53 lines
1009 B
TypeScript
53 lines
1009 B
TypeScript
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
|