Mercurial > gemma
view client/src/stores/user.js @ 158:992e17912405
feat: Improve login against real db
In order to log into our real db, we need to consume
the new JSON document consuming experies, username, roles, etc.
Token is stored securly in browser session.
Other data is stored in vue store.
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Tue, 03 Jul 2018 16:18:29 +0200 |
parents | 88d0d60924cf |
children | 061209505028 |
line wrap: on
line source
import { HTTP } from "../lib/http"; const User = { namespaced: true, state: { user: "", authenticated: false, expires: null, roles: [] }, getters: { authenticated: state => { return state.authenticated; }, userinfo: state => { return state.user; } }, mutations: { auth_success: (state, data) => { state.authenticated = true; const { token, user, expires, roles } = data; state.user = user; state.expires = expires; state.roles = roles; sessionStorage.setItem("token", token); }, auth_failure: state => { state.authenticated = false; sessionStorage.removeItem("token"); } }, actions: { login({ commit }, user) { return new Promise((resolve, reject) => { HTTP.get("/token", { params: user }) .then(response => { commit("auth_success", response.data); resolve(response); }) .catch(error => { commit("auth_failure"); reject(error); }); }); } } }; export default User;