From d1e7d7bf27e25405b6fcdd485e5aa1a3aeb46265 Mon Sep 17 00:00:00 2001 From: jdlugosz963 Date: Tue, 9 Nov 2021 22:24:46 +0100 Subject: Add login system --- src/store/index.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/store/index.js (limited to 'src/store/index.js') diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..fa8a1bd --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,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 -- cgit v1.2.3