24 lines
946 B
TypeScript
24 lines
946 B
TypeScript
import { usePermissionStore } from "@/store/permissionStore";
|
|
import { useAuthStore } from "@/store/authStore";
|
|
|
|
export function usePermissions() {
|
|
const roles = usePermissionStore((s) => s.roles);
|
|
const permissions = usePermissionStore((s) => s.permissions);
|
|
const isAuthenticated = useAuthStore((s) => !!s.accessToken);
|
|
|
|
const hasPermission = (permission: string) => permissions.includes(permission);
|
|
const hasRole = (role: string) => roles.includes(role);
|
|
|
|
return {
|
|
roles,
|
|
permissions,
|
|
isAuthenticated,
|
|
isAdmin: hasRole("ADMIN"),
|
|
isAdminOrManager: hasRole("ADMIN") || hasRole("USER_ROLE_ADMIN"),
|
|
canManageUsers: hasPermission("USER_MANAGE") || hasRole("USER_ROLE_ADMIN"),
|
|
canManageRoles: hasPermission("ROLE_MANAGE") || hasRole("USER_ROLE_ADMIN"),
|
|
canApproveWorkflow: hasPermission("WORKFLOW_APPROVE") || hasRole("CHECKER"),
|
|
canReadProfile: hasPermission("USER_READ") || hasRole("ADMIN")
|
|
};
|
|
}
|