auth-reducer.js 886 B

12345678910111213141516171819202122232425262728293031323334
  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.authToken
  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. sessionStorage.removeItem('authToken')
  25. return {}
  26. }
  27. return state
  28. }