@fakel/ra-simple-auth
Version:
Simple auth provider for @fakel/rest-admin
43 lines (39 loc) • 1.2 kB
text/typescript
import axios from 'axios';
import { AuthProviderOptions } from './types';
export const createAuthProvider = (options: AuthProviderOptions) => {
axios.defaults.withCredentials = true;
const APIClient =
options.client ||
axios.create({
baseURL: options.apiBaseUrl,
withCredentials: true,
});
return {
login: async ({ username, password }) => {
localStorage.setItem('isAuth', 'true');
localStorage.setItem('user', JSON.stringify({ username, password }));
},
logout: async () => {
localStorage.removeItem('user');
localStorage.removeItem('isAuth');
},
checkAuth: async () => {
return JSON.parse(localStorage.getItem('isAuth'));
},
checkError: async (error) => {
const { status } = error;
if (status === 401 || status === 403) {
localStorage.removeItem('token');
return Promise.reject();
}
return Promise.resolve();
},
getMe: async () => {
return JSON.parse(localStorage.getItem('user'));
},
getPermissions: async () => {
const role = localStorage.getItem('permissions');
return role ? Promise.resolve(role) : Promise.reject();
},
};
};