import * as React from 'react'; import { QueryClient } from '@tanstack/react-query'; import { AuthProvider } from '../types'; import { CoreAdminContext } from '../core/CoreAdminContext'; import { CanAccess } from './CanAccess'; import { TestMemoryRouter, RouterLocation } from '../routing'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; export default { title: 'ra-core/auth/CanAccess', }; 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, }: { authProvider?: AuthProvider; basename?: string; locationCallback?: (location: RouterLocation) => void; }) => ( protected content ); export const AccessDenied = ({ authProvider = defaultAuthProvider, }: { authProvider?: AuthProvider; }) => ( protected content ); export const CustomLoading = ({ authProvider = defaultAuthProvider, }: { authProvider?: AuthProvider; }) => ( Please wait...} > protected content ); export const CustomAccessDenied = ({ authProvider = defaultAuthProvider, }: { authProvider?: AuthProvider; }) => ( Not allowed} > protected content ); export const NoAuthProvider = () => ( protected content ); const data = Array.from({ length: 1000 }, (_, i) => { const post = { id: i + 1, title: `Post ${i + 1}`, body: `This is the body of post ${i + 1}`, }; Array.from({ length: 100 }, (_, i) => { post[`property${i + 1}`] = `Another very long property ${i + 1}`; }); return post; }); export const ManyCalls = ({ authProvider = defaultAuthProvider, queryClient, }: { authProvider?: AuthProvider | null; queryClient?: QueryClient; }) => (
{data.map(post => (
{post.title}
))}
);