import * as React from 'react'; import { QueryClient } from '@tanstack/react-query'; import { Route, Routes } from 'react-router'; import { AuthProvider } from '../types'; import { CoreAdminContext } from '../core'; import { useRequireAccess, UseRequireAccessResult } from './useRequireAccess'; import { TestMemoryRouter, RouterLocation } from '../routing'; export default { title: 'ra-core/auth/useRequireAccess', }; const UseRequireAccess = ({ children, action, resource, record, }: { children: any; action: string; resource: string; record?: any; }) => { const res = useRequireAccess({ action, resource, record, retry: false, }); return children(res); }; const StateInspector = ({ state }: { state: UseRequireAccessResult }) => (
{state.isPending ? 'Loading' : 'Protected Content'} {state.error ? 'Error' : null}
); 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, basename, locationCallback, queryClient, }: { authProvider?: AuthProvider | null; basename?: string; locationCallback?: (l: RouterLocation) => void; queryClient?: QueryClient; }) => ( {state => } } /> Access denied} /> Authentication Error} /> ); export const NoAuthProvider = ({ queryClient, }: { queryClient?: QueryClient; }) => ( {state => } } /> Access denied} /> Authentication Error} /> );