auth-reducer.js 1003 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import { jwtDecode } from '../helpers'
  2. export const authReducer = (state, { type, token, remember }) => {
  3. if (!state) {
  4. if (localStorage.authToken || sessionStorage.authToken) {
  5. type = 'AUTH_LOGIN'
  6. token = localStorage.authToken || sessionStorage.authTokenauth
  7. } else state = {}
  8. }
  9. if (type === 'AUTH_LOGIN') {
  10. remember ?
  11. localStorage.setItem('authToken', token) :
  12. sessionStorage.setItem('authToken', token)
  13. let payload = jwtDecode(token)
  14. if (typeof payload === 'object') {
  15. return {
  16. ...state,
  17. token,
  18. payload
  19. }
  20. } else return state
  21. }
  22. if (type === 'AUTH_LOGOUT') {
  23. localStorage.removeItem('authToken')
  24. return {}
  25. }
  26. return state
  27. }
  28. export const actionAuthLogin = (token, remember) => ({ type: 'AUTH_LOGIN', token, remember })
  29. export const actionAuthLogout = () => ({ type: 'AUTH_LOGOUT' })