diff options
Diffstat (limited to 'src/site/store')
| -rw-r--r-- | src/site/store/index.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/site/store/index.js b/src/site/store/index.js new file mode 100644 index 0000000..3977093 --- /dev/null +++ b/src/site/store/index.js @@ -0,0 +1,51 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; + +Vue.use(Vuex); + +const state = { + loggedIn: false, + user: {}, + token: null, + config: null +}; + +/* eslint-disable no-shadow */ +const mutations = { + loggedIn(state, payload) { + state.loggedIn = payload; + }, + user(state, payload) { + if (!payload) { + state.user = {}; + localStorage.removeItem('ls-user'); + return; + } + localStorage.setItem('ls-user', JSON.stringify(payload)); + state.user = payload; + }, + token(state, payload) { + if (!payload) { + localStorage.removeItem('ls-token'); + state.token = null; + return; + } + localStorage.setItem('ls-token', payload); + setAuthorizationHeader(payload); + state.token = payload; + }, + config(state, payload) { + state.config = payload; + } +}; + +const setAuthorizationHeader = payload => { + Vue.axios.defaults.headers.common.Authorization = payload ? `Bearer ${payload}` : ''; +}; + +const store = new Vuex.Store({ + state, + mutations +}); + +export default store; |