index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import VuexORM from '@vuex-orm/core'
  2. import { QUERY_TYPE } from '~/types/enums'
  3. const cookieparser = process.server ? require('cookieparser') : undefined
  4. export const plugins = [
  5. VuexORM.install()
  6. ]
  7. export const actions = {
  8. /**
  9. * Méthode appelée lors de la phase d'initialisation de Nuxt coté serveur (SSR)
  10. * @param commit
  11. * @param dispatch
  12. * @param req
  13. * @return {Promise<void>}
  14. */
  15. async nuxtServerInit ({ dispatch }, { req }) {
  16. await dispatch('initCookies', { req })
  17. await dispatch('getUserProfile')
  18. },
  19. /**
  20. * Récupère et Store les Cookies Bearer et XAccessId
  21. * @param commit
  22. * @param req
  23. * @return {Promise<void>}
  24. */
  25. async initCookies ({ commit }, { req }) {
  26. if (req.headers.cookie) {
  27. const parsed = cookieparser.parse(req.headers.cookie)
  28. try {
  29. await commit('profile/access/setSwitchId', parsed.SwitchAccessId)
  30. } catch (err) {}
  31. await commit('profile/access/setBearer', parsed.BEARER)
  32. await commit('profile/access/setId', parsed.AccessId)
  33. }
  34. },
  35. /**
  36. * Récupère les informations du profil connecté et update le Store Profile
  37. * @param dispatch
  38. * @param state
  39. * @return {Promise<void>}
  40. */
  41. async getUserProfile ({ dispatch }) {
  42. const myProfile = await this.app.context.$dataProvider.invoke({
  43. type: QUERY_TYPE.DEFAULT,
  44. url: '/api/my_profile'
  45. })
  46. await dispatch('profile/access/setProfile', myProfile.data)
  47. }
  48. }