Mercurial > gemma
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); }); });