Mercurial > gemma
comparison client/src/store/usermanagement.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/usermanagement/store.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 newUser = () => { | |
19 return { | |
20 user: "", | |
21 email: "", | |
22 country: null, | |
23 role: null, | |
24 isNew: true, | |
25 password: "", | |
26 roleLabel: "" | |
27 }; | |
28 }; | |
29 | |
30 const UserManagement = { | |
31 namespaced: true, | |
32 state: { | |
33 users: null, | |
34 currentUser: null, | |
35 userDetailsVisible: false | |
36 }, | |
37 getters: { | |
38 isUserDetailsVisible: state => { | |
39 return state.userDetailsVisible; | |
40 }, | |
41 currentUser: state => { | |
42 return state.currentUser; | |
43 }, | |
44 users: state => { | |
45 return state.users; | |
46 }, | |
47 getUserByName: state => name => { | |
48 return state.users.find(user => { | |
49 return user.user === name; | |
50 }); | |
51 } | |
52 }, | |
53 mutations: { | |
54 setUserDetailsInvisible: state => { | |
55 state.userDetailsVisible = false; | |
56 }, | |
57 setUserDetailsVisible: state => { | |
58 state.userDetailsVisible = true; | |
59 }, | |
60 usersLoaded: (state, data) => { | |
61 const resolveLabel = x => { | |
62 const labels = { | |
63 waterway_user: "Waterway User", | |
64 waterway_admin: "Waterway Administrator", | |
65 sys_admin: "System Admininistrator" | |
66 }; | |
67 return labels[x]; | |
68 }; | |
69 let users = data.users.map(u => { | |
70 u["roleLabel"] = resolveLabel(u["role"]); | |
71 return u; | |
72 }); | |
73 state.users = users; | |
74 }, | |
75 setCurrentUser: (state, data) => { | |
76 state.currentUser = data; | |
77 state.userDetailsVisible = true; | |
78 }, | |
79 clearCurrentUser: state => { | |
80 state.currentUser = newUser(); | |
81 } | |
82 }, | |
83 actions: { | |
84 deleteUser({ commit }, data) { | |
85 const { name } = data; | |
86 return new Promise((resolve, reject) => { | |
87 HTTP.delete("/users/" + name, { | |
88 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
89 }) | |
90 .then(response => { | |
91 commit("clearCurrentUser"); | |
92 commit("setUserDetailsInvisible"); | |
93 resolve(response); | |
94 }) | |
95 .catch(error => { | |
96 reject(error); | |
97 }); | |
98 }); | |
99 }, | |
100 saveCurrentUser({ commit }, data) { | |
101 const { path, user } = data; | |
102 if (user.isNew) { | |
103 return new Promise((resolve, reject) => { | |
104 HTTP.post("/users", user, { | |
105 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
106 }) | |
107 .then(response => { | |
108 commit("setUserDetailsInvisible"); | |
109 commit("clearCurrentUser"); | |
110 resolve(response); | |
111 }) | |
112 .catch(error => { | |
113 reject(error); | |
114 }); | |
115 }); | |
116 } else { | |
117 return new Promise((resolve, reject) => { | |
118 HTTP.put("/users/" + path, user, { | |
119 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
120 }) | |
121 .then(response => { | |
122 commit("setUserDetailsInvisible"); | |
123 commit("clearCurrentUser"); | |
124 resolve(response); | |
125 }) | |
126 .catch(error => { | |
127 reject(error); | |
128 }); | |
129 }); | |
130 } | |
131 }, | |
132 loadUsers({ commit }) { | |
133 return new Promise((resolve, reject) => { | |
134 HTTP.get("/users", { | |
135 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
136 }) | |
137 .then(response => { | |
138 commit("usersLoaded", response.data); | |
139 resolve(response); | |
140 }) | |
141 .catch(error => { | |
142 reject(error); | |
143 }); | |
144 }); | |
145 } | |
146 } | |
147 }; | |
148 | |
149 export default UserManagement; |