blob: 828c3cc8bc055744dc1fc8dc018a00b803870720 [file] [log] [blame]
Derick Montaguee080a1a2019-12-04 16:30:08 -06001import api from "../../api";
2
3const AuthenticationStore = {
4 namespaced: true,
5 state: {
6 auth: {},
7 status: "",
8 token: sessionStorage.getItem("token") || ""
9 },
10 getters: {
11 authStatus: state => state.status,
12 isLoggedIn: state => !!state.token
13 },
14 mutations: {
15 authRequest(state) {
16 state.status = "loading";
17 },
18 authSuccess(state, token, auth) {
19 state.status = "authenicated";
20 state.auth = auth;
21 state.token = token;
22 },
23 authError(state) {
24 state.status = "error";
25 },
26 logout(state) {
27 state.status = "";
28 state.token = "";
29 }
30 },
31 actions: {
32 login({ commit }, auth) {
33 commit("authRequest");
34 return api
35 .post("/login", auth)
36 .then(response => {
37 const token = response.data.token;
38 sessionStorage.setItem("token", token);
39 api.defaults.auth = auth; // TODO Permanent Solution
40 commit("authSuccess", token, auth);
41 })
42 .catch(error => {
43 commit("authError");
44 sessionStorage.removeItem("token");
45 throw new Error(error);
46 });
47 },
48 logout({ commit }) {
49 commit("logout");
50 sessionStorage.removeItem("token");
51 api.defaults.auth = {}; // Permanent solution
52 }
53 }
54};
55
56export default AuthenticationStore;