60 lines
1.2 KiB
TypeScript
60 lines
1.2 KiB
TypeScript
import type {AuthProvider} from '@refinedev/core'
|
|
|
|
export const TOKEN_KEY = 'refine-auth'
|
|
|
|
export const authProvider: AuthProvider = {
|
|
login: async ({username, email, password}) => {
|
|
if ((username || email) && password) {
|
|
localStorage.setItem(TOKEN_KEY, username)
|
|
return {
|
|
success: true,
|
|
redirectTo: '/',
|
|
}
|
|
}
|
|
|
|
return {
|
|
success: false,
|
|
error: {
|
|
name: 'LoginError',
|
|
message: 'Invalid username or password',
|
|
},
|
|
}
|
|
},
|
|
logout: async () => {
|
|
localStorage.removeItem(TOKEN_KEY)
|
|
return {
|
|
success: true,
|
|
redirectTo: '/login',
|
|
}
|
|
},
|
|
check: async () => {
|
|
const token = localStorage.getItem(TOKEN_KEY)
|
|
if (token) {
|
|
return {
|
|
authenticated: true,
|
|
}
|
|
}
|
|
|
|
return {
|
|
authenticated: false,
|
|
redirectTo: '/login',
|
|
}
|
|
},
|
|
getPermissions: async () => null,
|
|
getIdentity: async () => {
|
|
const token = localStorage.getItem(TOKEN_KEY)
|
|
if (token) {
|
|
return {
|
|
id: 1,
|
|
name: 'John Doe',
|
|
avatar: 'https://i.pravatar.cc/300',
|
|
}
|
|
}
|
|
return null
|
|
},
|
|
onError: async (error) => {
|
|
console.error(error)
|
|
return {error}
|
|
},
|
|
}
|