1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import Vue from 'vue'
import Vuex from 'vuex'
import Axios from 'axios'
import createPersistedState from "vuex-persistedstate";
Vue.use(Vuex)
const get_default_state = () => {
return {
token: "",
user: {}
}
}
const store = new Vuex.Store({
plugins: [createPersistedState()],
state: get_default_state(),
mutations: {
set_token: (state, token) => state.token = token,
set_user: (state, user) => state.user = user,
reset_state: (state) => Object.assign(state, get_default_state())
},
getters: {
is_logged_in: (state) => {
return state.token !== ""
},
get_user: (state) => {
return state.user
}
},
actions: {
login: ({commit}, {token, user}) => {
commit('set_token', token)
commit('set_user', user)
Axios.defaults.headers.common['Authorization'] = `Token ${token}`;
},
logout: ({commit}) => {
commit('reset_state')
}
}
})
export default store
|