import VuexORM from '@vuex-orm/core' import {QUERY_TYPE} from "~/types/enums"; const cookieparser = process.server ? require('cookieparser') : undefined export const plugins = [ VuexORM.install() ]; export const actions = { /** * Méthode appelée lors de la phase d'initialisation de Nuxt coté serveur (SSR) * @param commit * @param dispatch * @param req * @return {Promise} */ async nuxtServerInit({dispatch}, {req}) { const initCookie = await dispatch('initCookies', {req: req}) const updateProfile = await dispatch('updateProfile') }, /** * Récupère et Store les Cookies Bearer et XAccessId * @param commit * @param req * @return {Promise} */ async initCookies({commit}, {req}){ let bearer = null let accessId = null if (req.headers.cookie) { const parsed = cookieparser.parse(req.headers.cookie) try { bearer = parsed.BEARER } catch (err) { throw new Error(err.message) } try { accessId = parsed.AccessId } catch (err) { throw new Error(err.message) } } commit('profile/access/setBearer', bearer) commit('profile/access/setAccessId', accessId) }, /** * Récupère les informations du profile connecté et update le Store Profile * @param dispatch * @param state * @return {Promise} */ async updateProfile({dispatch, state}) { const my_profile = await this.app.context.$dataProvider.invoke({ type: QUERY_TYPE.DEFAULT, url: 'my_profile', id: state.profile.access.accessId }) dispatch('profile/access/setProfile', my_profile) }, }