index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import Cookie from 'js-cookie'
  2. export const saveUserData = ({ idToken, expiresIn }, { email, avatar }) => {
  3. expiresIn = 3600
  4. const tokenExpiration = Date.now() + expiresIn * 1000
  5. localStorage.setItem('jwt', idToken)
  6. localStorage.setItem('expiresIn', tokenExpiration)
  7. localStorage.setItem('user', email)
  8. localStorage.setItem('avatar', avatar)
  9. Cookie.set('jwt', idToken)
  10. Cookie.set('expiresIn', tokenExpiration)
  11. Cookie.set('user', email)
  12. Cookie.set('avatar', avatar)
  13. }
  14. export const getUserFromCookie = (req) => {
  15. if (!req.headers.cookie) { return undefined }
  16. const jwtCookie = req.headers.cookie.split(';').find(c => c.trim().startWith('jwt='))
  17. const expiresInCookie = req.headers.cookie.split(';').find(c => c.trim().startWith('expiresIn='))
  18. const userCookie = req.headers.cookie.split(';').find(c => c.trim().startWith('user='))
  19. const avatarCookie = req.headers.cookie.split(';').find(c => c.trim().startWith('avatar='))
  20. if (!jwtCookie || !expiresInCookie || !userCookie || !avatarCookie) { return undefined }
  21. const jwt = jwtCookie.split('=')[1]
  22. const expiresIn = expiresInCookie.split('=')[1]
  23. const user = userCookie.split('=')[1]
  24. const avatar = avatarCookie.split('=')[1]
  25. return { jwt, expiresIn, user, avatar }
  26. }
  27. export const getUserFromLocalStorage = () => {
  28. if (localStorage) {
  29. const jwt = localStorage.getItem('jwt')
  30. const expiresIn = localStorage.getItem('expiresIn')
  31. const user = localStorage.getItem('user')
  32. const avatar = localStorage.getItem('avatar')
  33. return { jwt, expiresIn, user, avatar }
  34. }
  35. }
  36. export const clearUserData = () => {
  37. if (!process.server) {
  38. localStorage.removeItem('jwt')
  39. localStorage.removeItem('expiresIn')
  40. localStorage.removeItem('user')
  41. localStorage.removeItem('avatar')
  42. }
  43. Cookie.remove('jwt')
  44. Cookie.remove('expiresIn')
  45. Cookie.remove('user')
  46. Cookie.remove('avatar')
  47. }