authReducer.js 887 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. }catch (e) {
  7. console.log('Лажа, Бро ' + e);
  8. }
  9. }
  10. function authReducer(state, { type, token }) {
  11. if (!state) {
  12. if (localStorage.authToken) {
  13. type = 'LOGIN'
  14. token = localStorage.authToken
  15. } else state = {}
  16. }
  17. if (type === 'LOGIN') {
  18. localStorage.setItem('authToken', token)
  19. let payload = jwtDecode(token)
  20. if (typeof payload === 'object') {
  21. return {
  22. ...state,
  23. token,
  24. payload
  25. }
  26. } else return state
  27. }
  28. if (type === 'LOGOUT') {
  29. localStorage.removeItem('authToken')
  30. return {}
  31. }
  32. return state
  33. }
  34. export default authReducer;