Billy Chan c2fc62a903
GraphQL based Admin Dashboard with Loco and Seaography (#2297)
* backend

* frontend

* frontend

* README

* CI

* fmt

* docs

* edit

* rename

* Bump seaography to 1.0

* Cargo.lock
2024-08-09 11:13:45 +08:00

45 lines
1.4 KiB
TypeScript

import { 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) {
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
let { 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: () => 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;