29 lines
1.0 KiB
TypeScript
29 lines
1.0 KiB
TypeScript
import {
|
|
canCreate,
|
|
canDelete,
|
|
canRead,
|
|
canUpdate,
|
|
CrudAction,
|
|
hasActionPermission,
|
|
hasAnyPermission,
|
|
hasPermission,
|
|
} from "../helpers/permissions";
|
|
import { useGetAdminPermissions } from "../pages/users/hooks/useUserData";
|
|
|
|
export const usePermissions = () => {
|
|
const { data, isPending, isLoading } = useGetAdminPermissions();
|
|
const permissions = data?.data?.permissions;
|
|
|
|
return {
|
|
permissions,
|
|
isPending: isPending || isLoading,
|
|
can: (resource: string, action: CrudAction) => hasActionPermission(permissions, resource, action),
|
|
canCreate: (resource: string) => canCreate(permissions, resource),
|
|
canRead: (resource: string) => canRead(permissions, resource),
|
|
canUpdate: (resource: string) => canUpdate(permissions, resource),
|
|
canDelete: (resource: string) => canDelete(permissions, resource),
|
|
has: (resourceOrPermission: string) => hasPermission(permissions, resourceOrPermission),
|
|
hasAny: (resources: readonly string[]) => hasAnyPermission(permissions, resources),
|
|
};
|
|
};
|