import { type AuthProvider, HttpError } from 'react-admin'; import data from './users.json'; /** * This authProvider is only for test purposes. Don't use it in production. */ export const authProvider: AuthProvider = { login: ({ username, password }) => { const user = data.users.find( (u) => u.username === username && u.password === password, ); if (user) { const { password, ...userToPersist } = user; localStorage.setItem('user', JSON.stringify(userToPersist)); return Promise.resolve(); } return Promise.reject( new HttpError('Unauthorized', 401, { message: 'Invalid username or password', }), ); }, logout: () => { localStorage.removeItem('user'); return Promise.resolve(); }, checkError: (error) => { const status = error.status; if (status === 401 || status === 403) { localStorage.removeItem('auth'); return Promise.reject(); } // other error code (404, 500, etc): no need to log out return Promise.resolve(); }, checkAuth: () => localStorage.getItem('user') ? Promise.resolve() : Promise.reject(), getPermissions: () => { return Promise.resolve(undefined); }, getIdentity: () => { const persistedUser = localStorage.getItem('user'); const user = persistedUser ? JSON.parse(persistedUser) : null; return Promise.resolve(user); }, }; export default authProvider;