diff client/src/stores/user.js @ 160:061209505028

feat: Login and logout with session restoration implemented Login information stored in local storage for restoration after browser restart. If a non expired session is found, it is restored before entering the main area. Username and logout are located in the lower sidebar.
author Thomas Junk <thomas.junk@intevation.de>
date Wed, 04 Jul 2018 17:21:10 +0200
parents 992e17912405
children 9908260d1e6a
line wrap: on
line diff
--- a/client/src/stores/user.js	Tue Jul 03 17:46:06 2018 +0200
+++ b/client/src/stores/user.js	Wed Jul 04 17:21:10 2018 +0200
@@ -3,10 +3,10 @@
 const User = {
   namespaced: true,
   state: {
-    user: "",
     authenticated: false,
     expires: null,
-    roles: []
+    roles: [],
+    user: ""
   },
   getters: {
     authenticated: state => {
@@ -14,20 +14,44 @@
     },
     userinfo: state => {
       return state.user;
+    },
+    roles: state => {
+      return state.roles;
+    },
+    expires: state => {
+      return state.expires;
     }
   },
   mutations: {
     auth_success: (state, data) => {
-      state.authenticated = true;
       const { token, user, expires, roles } = data;
-      state.user = user;
+      localStorage.setItem("expires", expires);
+      localStorage.setItem("roles", roles);
+      localStorage.setItem("token", token);
+      localStorage.setItem("user", user);
       state.expires = expires;
       state.roles = roles;
-      sessionStorage.setItem("token", token);
+      state.user = user;
+      state.authenticated = true;
+    },
+    clear_auth: state => {
+      state.authenticated = false;
+      state.expires = null;
+      state.roles = [];
+      state.user = "";
+      localStorage.clear();
     },
-    auth_failure: state => {
-      state.authenticated = false;
-      sessionStorage.removeItem("token");
+    set_user: (state, name) => {
+      state.user = name;
+    },
+    set_roles: (state, roles) => {
+      state.roles = roles;
+    },
+    set_expires: (state, expires) => {
+      state.expires = expires;
+    },
+    authenticate: state => {
+      state.authenticated = true;
     }
   },
   actions: {
@@ -39,7 +63,7 @@
             resolve(response);
           })
           .catch(error => {
-            commit("auth_failure");
+            commit("clear_auth");
             reject(error);
           });
       });