comparison 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
comparison
equal deleted inserted replaced
159:3d9341f6da4e 160:061209505028
1 import { HTTP } from "../lib/http"; 1 import { HTTP } from "../lib/http";
2 2
3 const User = { 3 const User = {
4 namespaced: true, 4 namespaced: true,
5 state: { 5 state: {
6 user: "",
7 authenticated: false, 6 authenticated: false,
8 expires: null, 7 expires: null,
9 roles: [] 8 roles: [],
9 user: ""
10 }, 10 },
11 getters: { 11 getters: {
12 authenticated: state => { 12 authenticated: state => {
13 return state.authenticated; 13 return state.authenticated;
14 }, 14 },
15 userinfo: state => { 15 userinfo: state => {
16 return state.user; 16 return state.user;
17 },
18 roles: state => {
19 return state.roles;
20 },
21 expires: state => {
22 return state.expires;
17 } 23 }
18 }, 24 },
19 mutations: { 25 mutations: {
20 auth_success: (state, data) => { 26 auth_success: (state, data) => {
21 state.authenticated = true;
22 const { token, user, expires, roles } = data; 27 const { token, user, expires, roles } = data;
23 state.user = user; 28 localStorage.setItem("expires", expires);
29 localStorage.setItem("roles", roles);
30 localStorage.setItem("token", token);
31 localStorage.setItem("user", user);
24 state.expires = expires; 32 state.expires = expires;
25 state.roles = roles; 33 state.roles = roles;
26 sessionStorage.setItem("token", token); 34 state.user = user;
35 state.authenticated = true;
27 }, 36 },
28 auth_failure: state => { 37 clear_auth: state => {
29 state.authenticated = false; 38 state.authenticated = false;
30 sessionStorage.removeItem("token"); 39 state.expires = null;
40 state.roles = [];
41 state.user = "";
42 localStorage.clear();
43 },
44 set_user: (state, name) => {
45 state.user = name;
46 },
47 set_roles: (state, roles) => {
48 state.roles = roles;
49 },
50 set_expires: (state, expires) => {
51 state.expires = expires;
52 },
53 authenticate: state => {
54 state.authenticated = true;
31 } 55 }
32 }, 56 },
33 actions: { 57 actions: {
34 login({ commit }, user) { 58 login({ commit }, user) {
35 return new Promise((resolve, reject) => { 59 return new Promise((resolve, reject) => {
37 .then(response => { 61 .then(response => {
38 commit("auth_success", response.data); 62 commit("auth_success", response.data);
39 resolve(response); 63 resolve(response);
40 }) 64 })
41 .catch(error => { 65 .catch(error => {
42 commit("auth_failure"); 66 commit("clear_auth");
43 reject(error); 67 reject(error);
44 }); 68 });
45 }); 69 });
46 } 70 }
47 } 71 }