66 lines
1.4 KiB
TypeScript
66 lines
1.4 KiB
TypeScript
import {AuthModel} from './_models'
|
|
|
|
const AUTH_LOCAL_STORAGE_KEY = 'kt-auth-react-v'
|
|
const getAuth = (): AuthModel | undefined => {
|
|
if (!localStorage) {
|
|
return
|
|
}
|
|
|
|
const lsValue: string | null = localStorage.getItem(AUTH_LOCAL_STORAGE_KEY)
|
|
if (!lsValue) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const auth: AuthModel = JSON.parse(lsValue) as AuthModel
|
|
if (auth) {
|
|
// You can easily check auth_token expiration also
|
|
return auth
|
|
}
|
|
} catch (error) {
|
|
console.error('AUTH LOCAL STORAGE PARSE ERROR', error)
|
|
}
|
|
}
|
|
|
|
const setAuth = (auth: AuthModel) => {
|
|
if (!localStorage) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const lsValue = JSON.stringify(auth)
|
|
localStorage.setItem(AUTH_LOCAL_STORAGE_KEY, lsValue)
|
|
} catch (error) {
|
|
console.error('AUTH LOCAL STORAGE SAVE ERROR', error)
|
|
}
|
|
}
|
|
|
|
const removeAuth = () => {
|
|
if (!localStorage) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
localStorage.removeItem(AUTH_LOCAL_STORAGE_KEY)
|
|
} catch (error) {
|
|
console.error('AUTH LOCAL STORAGE REMOVE ERROR', error)
|
|
}
|
|
}
|
|
|
|
export function setupAxios(axios: any) {
|
|
axios.defaults.headers.Accept = 'application/json'
|
|
axios.interceptors.request.use(
|
|
(config: {headers: {Authorization: string}}) => {
|
|
const auth = getAuth()
|
|
if (auth && auth.api_token) {
|
|
config.headers.Authorization = `Bearer ${auth.api_token}`
|
|
}
|
|
|
|
return config
|
|
},
|
|
(err: any) => Promise.reject(err)
|
|
)
|
|
}
|
|
|
|
export {getAuth, setAuth, removeAuth, AUTH_LOCAL_STORAGE_KEY}
|