UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

55 lines 2.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCanAccessCallback = void 0; const react_query_1 = require("@tanstack/react-query"); const useAuthProvider_1 = __importDefault(require("./useAuthProvider.cjs")); const react_1 = require("react"); /** * A hook that returns a function you can call to determine whether user has access to the given resource * * @example * import { Datagrid, List, TextField, useCanAccessCallback } from 'react-admin'; * * const UserList = () => { * const checkAccess = useCanAccessCallback(); * * const handleRowClick = (id: Identifier, resource: string, record: Record) => { * try { * const canAccess = checkAccess({ resource: 'users', action: 'edit', record }); * return canAccess ? "edit" : "show"; * } catch (error) { * console.error(error); * } * }; * * return ( * <List> * <Datagrid onClick={handleRowClick}> * <TextField source="id" /> * <TextField source="name" /> * <TextField source="email" /> * </Datagrid> * </List> * ); * }; */ const useCanAccessCallback = (options = {}) => { const authProvider = (0, useAuthProvider_1.default)(); const authProviderHasCanAccess = !!authProvider?.canAccess; const { mutateAsync } = (0, react_query_1.useMutation)({ mutationFn: async (params) => { if (!authProvider || !authProvider.canAccess) { return true; } return authProvider.canAccess(params); }, retry: false, ...options, }); return (0, react_1.useMemo)(() => (authProviderHasCanAccess ? mutateAsync : () => true), [authProviderHasCanAccess, mutateAsync]); }; exports.useCanAccessCallback = useCanAccessCallback; //# sourceMappingURL=useCanAccessCallback.js.map