19 lines
573 B
TypeScript
19 lines
573 B
TypeScript
import { IUserSchema } from "@/src/entities/models/users/users.model"
|
|
|
|
type Role = "viewer" | "editor" | "admin";
|
|
|
|
const PERMISSIONS: Record<Role, string[]> = {
|
|
viewer: ["view:post"],
|
|
editor: ["view:post", "edit:post"],
|
|
admin: ["view:post", "create:post", "edit:post", "delete:post"],
|
|
};
|
|
export const CheckPermission = (user: IUserSchema, action: string, resource: string) => {
|
|
const permissions = PERMISSIONS[user.role as Role]
|
|
|
|
if (!permissions) return false
|
|
|
|
return permissions.includes(`${action}:${resource}`)
|
|
}
|
|
|
|
|
|
export default CheckPermission |