import * as React from 'react'; import { AuthProvider } from '../types'; import { CoreAdminContext } from '../core'; import { QueryClient } from '@tanstack/react-query'; import { useCanAccessResources, UseCanAccessResourcesResult, } from './useCanAccessResources'; export default { title: 'ra-core/auth/useCanAccessResources', }; const UseCanAccessResources = ({ children, action, resources, }: { children: any; action: string; resources: string[]; }) => { const { canAccess, isPending } = useCanAccessResources({ action, resources, }); return children({ canAccess, isPending }); }; const StateInspector = ({ state }: { state: UseCanAccessResourcesResult }) => { return (
{state.isPending && 'LOADING'} {state.canAccess !== undefined && ( {JSON.stringify(state.canAccess)} )} {state.error && 'ERROR'}
); }; const defaultAuthProvider: AuthProvider = { login: () => Promise.reject('bad method'), logout: () => Promise.reject('bad method'), checkAuth: () => Promise.reject('bad method'), checkError: () => Promise.reject('bad method'), getPermissions: () => Promise.reject('bad method'), canAccess: ({ action }) => new Promise(resolve => setTimeout(resolve, 500, action === 'read')), }; export const Basic = ({ authProvider = defaultAuthProvider, queryClient, }: { authProvider?: AuthProvider | null; queryClient?: QueryClient; }) => ( {result => } ); export const NoAuthProvider = ({ queryClient, }: { queryClient?: QueryClient; }) => ( {result => } );