authReducer.js 904 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const jwtDecode = token => {
  2. try {
  3. let arrToken = token.split('.')
  4. let base64Token = atob(arrToken[1])
  5. return JSON.parse(base64Token)
  6. }
  7. catch (e) {
  8. console.log('Лажа, Бро ' + e);
  9. }
  10. }
  11. function authReducer(state, { type, token }) {
  12. if (!state) {
  13. if (localStorage.authToken) {
  14. type = 'AUTH_LOGIN'
  15. token = localStorage.authToken
  16. } else state = {}
  17. }
  18. if (type === 'AUTH_LOGIN') {
  19. localStorage.setItem('authToken', token)
  20. let payload = jwtDecode(token)
  21. if (typeof payload === 'object') {
  22. return {
  23. ...state,
  24. token,
  25. payload
  26. }
  27. } else return state
  28. }
  29. if (type === 'AUTH_LOGOUT') {
  30. localStorage.removeItem('authToken')
  31. return {}
  32. }
  33. return state
  34. }
  35. export default authReducer