feat: Implement role-based access control and enhance permissions system

This commit is contained in:
beilunyang
2024-12-27 13:35:29 +08:00
parent e815d1bec5
commit 5a7c17752a
22 changed files with 1888 additions and 39 deletions

View File

@@ -0,0 +1,25 @@
"use client"
import { useSession } from "next-auth/react"
import { Permission, Role, hasPermission } from "@/lib/permissions"
export function useRolePermission() {
const { data: session } = useSession()
const roles = session?.user?.roles
const checkPermission = (permission: Permission) => {
if (!roles) return false
return hasPermission(roles.map(r => r.name) as Role[], permission)
}
const hasRole = (role: Role) => {
if (!roles) return false
return roles.some(r => r.name === role)
}
return {
checkPermission,
hasRole,
roles,
}
}