index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. const initCookie = await dispatch('initCookies', {req: req})
  17. const updateProfile = await dispatch('updateProfile')
  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. let bearer = null
  27. let accessId = null
  28. if (req.headers.cookie) {
  29. const parsed = cookieparser.parse(req.headers.cookie)
  30. try {
  31. bearer = parsed.BEARER
  32. } catch (err) {
  33. throw new Error(err.message)
  34. }
  35. try {
  36. accessId = parsed.AccessId
  37. } catch (err) {
  38. throw new Error(err.message)
  39. }
  40. }
  41. commit('profile/access/setBearer', bearer)
  42. commit('profile/access/setAccessId', accessId)
  43. },
  44. /**
  45. * Récupère les informations du profile connecté et update le Store Profile
  46. * @param dispatch
  47. * @param state
  48. * @return {Promise<void>}
  49. */
  50. async updateProfile({dispatch, state}) {
  51. const my_profile = await this.app.context.$dataProvider.invoke({
  52. type: QUERY_TYPE.DEFAULT,
  53. url: 'my_profile',
  54. id: state.profile.access.accessId
  55. })
  56. dispatch('profile/access/setProfile', my_profile)
  57. },
  58. }