12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import Vue from 'vue';
- import Vuex from 'vuex';
- import axios from 'axios';
-
- Vue.use(Vuex);
- export default {
- namespaced: true,
- state: {
- status: '',
- token: sessionStorage.getItem('token') || '',
- user: {},
- individual: {},
- },
- mutations: {
- auth_request(state) {
- state.status = 'loading';
- },
- auth_success(state, token, user) {
- state.status = 'success';
- state.token = token;
- state.user = user;
- },
- auth_error(state) {
- state.status = 'error';
- },
- logout(state) {
- state.status = '';
- state.token = '';
- },
- },
- getters: {
- isLoggedIn: state => !!state.token,
- authStatus: state => state.status,
- },
- actions: {
- login({ commit }, user) {
- return new Promise((reject) => {
- commit('auth_request');
- axios({
- url: '/api/register/authenticate',
- data: user,
- method: 'POST',
- })
- .then((resp) => {
- console.log(resp.data);
- sessionStorage.setItem('token', resp.data.token);
- sessionStorage.setItem('username', resp.data.username);
- sessionStorage.setItem('name', resp.data.name);
- commit('auth_success', resp.data.token, resp.data);
- })
- .catch((err) => {
- commit('auth_error');
- sessionStorage.removeItem('token');
- sessionStorage.removeItem('username');
- sessionStorage.removeItem('name');
- reject(err);
- });
- });
- },
- logout({ commit }) {
- return new Promise(() => {
- commit('logout');
- sessionStorage.removeItem('token');
- sessionStorage.removeItem('username');
- sessionStorage.removeItem('name');
- delete axios.defaults.headers.common.Authorization;
- });
- },
- },
- };
|