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