aboutsummaryrefslogtreecommitdiff
path: root/src/site/store
diff options
context:
space:
mode:
Diffstat (limited to 'src/site/store')
-rw-r--r--src/site/store/index.js51
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;