index.js 662 Bytes
import Vuex from 'vuex'

const createStore = () => {
  return new Vuex.Store({
    state: {
      user: {},
    },
    mutations: {
      createUserInfo (state, info) {
        state.user = Object.assign({}, info)
      },
    },
    actions: {
      async nuxtServerInit ({ commit }, { req, app, query, redirect, store, params }) {
        if (!store.state.user.id) {
          let {data} = await app.$axios.get(`/user?code=${query.code || ''}`)
          if (!data.success) {
            redirect(301, data.redirect)
          } else {
            store.commit('createUserInfo', data.user)
          }
        }
      }
    }
  })
}

export default createStore