permission sidebar

This commit is contained in:
hamid zarghami
2025-12-27 09:51:58 +03:30
parent 0efaa5c5af
commit 23c8e973f2
4 changed files with 299 additions and 131 deletions
+50
View File
@@ -0,0 +1,50 @@
import { useMemo } from "react";
import { useGetPermissions } from "@/pages/roles/hooks/useRolesData";
import {
hasPermission,
hasAnyPermission,
hasAllPermissions,
} from "@/helpers/permissions";
/**
* Custom hook for managing user permissions
* @returns Object with permissions data and helper functions
*/
export const usePermissions = () => {
const { data: permissionsResponse, isLoading, error } = useGetPermissions();
const permissions = useMemo(() => {
return permissionsResponse?.data || [];
}, [permissionsResponse]);
/**
* Checks if user has a specific permission
*/
const checkPermission = (permissionName: string): boolean => {
return hasPermission(permissions, permissionName);
};
/**
* Checks if user has any of the specified permissions
*/
const checkAnyPermission = (permissionNames: string[]): boolean => {
return hasAnyPermission(permissions, permissionNames);
};
/**
* Checks if user has all of the specified permissions
*/
const checkAllPermissions = (permissionNames: string[]): boolean => {
return hasAllPermissions(permissions, permissionNames);
};
return {
permissions,
isLoading,
error,
checkPermission,
checkAnyPermission,
checkAllPermissions,
hasPermission: checkPermission,
};
};