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}
))}
);