Skip to content
Snippets Groups Projects
user.ts 1.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • import axios from 'axios'
    
    import { History } from 'history'
    import { AppDispatch } from '../store'
    
    import { AccountLoginModel } from './../interfaces/FormModels'
    
    import Types from './types'
    
    
    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
    
          getUserData()(dispatch)
    
          dispatch({ type: Types.CLEAR_ERRORS }) // no error
          history.push('/admin') //redirecting to admin page after login success
        })
        .catch((err) => {
    
          console.log(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,
    
            payload: res.data,
    
          })
        })
        .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