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;