52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
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;
|