authReducer.js 822 B

12345678910111213141516171819202122232425262728293031
  1. import jwt_decode from "jwt-decode";
  2. export function authReducer(state, { type, token }) {
  3. if (!state) {
  4. if (localStorage.authToken) {
  5. type = 'AUTH_LOGIN'
  6. token = localStorage.authToken
  7. } else state = {}
  8. }
  9. if (type === 'AUTH_LOGIN') {
  10. localStorage.setItem('authToken', token)
  11. let payload = jwt_decode(token)
  12. if (typeof payload === 'object') {
  13. return {
  14. ...state,
  15. token,
  16. payload
  17. }
  18. } else return state
  19. }
  20. if (type === 'AUTH_LOGOUT') {
  21. localStorage.removeItem('authToken')
  22. return {}
  23. }
  24. return state
  25. }
  26. export const actionAuthLogin = token => ({ type: 'AUTH_LOGIN', token })
  27. export const actionAuthLogout = () => ({ type: 'AUTH_LOGOUT' })