Newer
Older
import { History } from 'history'
import { AppDispatch } from '../store'
import { AccountLoginModel } from './../interfaces/FormModels'
export const loginUser = (userData: AccountLoginModel, history: History) => async (dispatch: AppDispatch) => {
dispatch({ type: Types.LOADING_UI })
.post('/auth/login', userData)
.then((res) => {
const token = `Bearer ${res.data.access_token}`
localStorage.setItem('token', token) //setting token to local storage
axios.defaults.headers.common['Authorization'] = token //setting authorize token to header in axios
dispatch({ type: Types.CLEAR_ERRORS }) // no error
history.push('/admin') //redirecting to admin page after login success
})
.catch((err) => {
dispatch({
type: Types.SET_ERRORS,
payload: err && err.response && err.response.data,
export const getUserData = () => async (dispatch: AppDispatch) => {
dispatch({ type: Types.LOADING_USER })
.get('/users')
.then((res) => {
dispatch({
type: Types.SET_USER,
})
})
.catch((err) => {
console.log(err)
})
}
export const logoutUser = () => async (dispatch: AppDispatch) => {
await axios.post('/auth/logout').then(() => {
localStorage.removeItem('token')
delete axios.defaults.headers.common['Authorization']
dispatch({
type: Types.SET_UNAUTHENTICATED,
})
window.location.href = '/' //redirect to login page