Mercurial > gemma
comparison client/src/store/user.js @ 1096:aa1f5daf6fc9
refac: centralized stores
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Tue, 30 Oct 2018 16:55:29 +0100 |
parents | client/src/application/stores/user.js@ca628dce90dd |
children | 8d12056d602a |
comparison
equal
deleted
inserted
replaced
1095:2d6d8b676e3f | 1096:aa1f5daf6fc9 |
---|---|
1 /* | |
2 * This is Free Software under GNU Affero General Public License v >= 3.0 | |
3 * without warranty, see README.md and license for details. | |
4 * | |
5 * SPDX-License-Identifier: AGPL-3.0-or-later | |
6 * License-Filename: LICENSES/AGPL-3.0.txt | |
7 * | |
8 * Copyright (C) 2018 by via donau | |
9 * – Österreichische Wasserstraßen-Gesellschaft mbH | |
10 * Software engineering by Intevation GmbH | |
11 * | |
12 * Author(s): | |
13 * Thomas Junk <thomas.junk@intevation.de> | |
14 */ | |
15 | |
16 import { HTTP } from "../application/lib/http"; | |
17 | |
18 const User = { | |
19 namespaced: true, | |
20 state: { | |
21 authenticated: false, | |
22 expires: null, | |
23 roles: [], | |
24 user: "" | |
25 }, | |
26 getters: { | |
27 isAuthenticated: state => { | |
28 return state.authenticated; | |
29 }, | |
30 userinfo: state => { | |
31 return state.user; | |
32 }, | |
33 roles: state => { | |
34 return state.roles; | |
35 }, | |
36 expires: state => { | |
37 return state.expires; | |
38 }, | |
39 isWaterwayAdmin: state => { | |
40 return state.roles.includes("waterway_admin"); | |
41 }, | |
42 isSysAdmin: state => { | |
43 return state.roles.includes("sys_admin"); | |
44 } | |
45 }, | |
46 mutations: { | |
47 auth_success: (state, data) => { | |
48 const { token, user, expires, roles } = data; | |
49 localStorage.setItem("expires", expires); | |
50 localStorage.setItem("roles", roles); | |
51 localStorage.setItem("token", token); | |
52 localStorage.setItem("user", user); | |
53 state.expires = expires; | |
54 state.roles = roles; | |
55 state.user = user; | |
56 state.authenticated = true; | |
57 }, | |
58 clear_auth: state => { | |
59 state.authenticated = false; | |
60 state.expires = null; | |
61 state.roles = []; | |
62 state.user = ""; | |
63 localStorage.clear(); | |
64 }, | |
65 set_user: (state, name) => { | |
66 state.user = name; | |
67 }, | |
68 set_roles: (state, roles) => { | |
69 state.roles = roles; | |
70 }, | |
71 set_expires: (state, expires) => { | |
72 state.expires = expires; | |
73 }, | |
74 set_authenticate: state => { | |
75 state.authenticated = true; | |
76 } | |
77 }, | |
78 actions: { | |
79 login({ commit }, user) { | |
80 // using POST is a bit more secure than GET | |
81 return new Promise((resolve, reject) => { | |
82 HTTP.post("/login", user) | |
83 .then(response => { | |
84 commit("auth_success", response.data); | |
85 resolve(response); | |
86 }) | |
87 .catch(error => { | |
88 commit("clear_auth"); | |
89 reject(error); | |
90 }); | |
91 }); | |
92 } | |
93 } | |
94 }; | |
95 | |
96 export default User; |