permission sidebar
This commit is contained in:
@@ -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,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user