Mercurial > gemma
comparison client/src/usermanagement/store.js @ 585:ef307bd6b5d8
refac: restructured client application
To make the application more accessible for developers, the structure was reorganized.
Instead of sticking to technical terminology, the application terminology is according to the domain:
I.e. "map" contains everything regarding map (including store).
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Fri, 07 Sep 2018 11:13:56 +0200 |
parents | |
children | ca628dce90dd |
comparison
equal
deleted
inserted
replaced
584:8b66a10aaf8a | 585:ef307bd6b5d8 |
---|---|
1 import { HTTP } from "../application/lib/http"; | |
2 | |
3 const newUser = () => { | |
4 return { | |
5 user: "", | |
6 email: "", | |
7 country: null, | |
8 role: null, | |
9 isNew: true, | |
10 password: "", | |
11 roleLabel: "" | |
12 }; | |
13 }; | |
14 | |
15 const UserManagement = { | |
16 namespaced: true, | |
17 state: { | |
18 users: null, | |
19 currentUser: null, | |
20 userDetailsVisible: false | |
21 }, | |
22 getters: { | |
23 isUserDetailsVisible: state => { | |
24 return state.userDetailsVisible; | |
25 }, | |
26 currentUser: state => { | |
27 return state.currentUser; | |
28 }, | |
29 users: state => { | |
30 return state.users; | |
31 }, | |
32 getUserByName: state => name => { | |
33 return state.users.find(user => { | |
34 return user.user === name; | |
35 }); | |
36 } | |
37 }, | |
38 mutations: { | |
39 setUserDetailsInvisible: state => { | |
40 state.userDetailsVisible = false; | |
41 }, | |
42 setUserDetailsVisible: state => { | |
43 state.userDetailsVisible = true; | |
44 }, | |
45 usersLoaded: (state, data) => { | |
46 const resolveLabel = x => { | |
47 const labels = { | |
48 waterway_user: "Waterway User", | |
49 waterway_admin: "Waterway Administrator", | |
50 sys_admin: "System Admininistrator" | |
51 }; | |
52 return labels[x]; | |
53 }; | |
54 let users = data.users.map(u => { | |
55 u["roleLabel"] = resolveLabel(u["role"]); | |
56 return u; | |
57 }); | |
58 state.users = users; | |
59 }, | |
60 setCurrentUser: (state, data) => { | |
61 state.currentUser = data; | |
62 state.userDetailsVisible = true; | |
63 }, | |
64 clearCurrentUser: state => { | |
65 state.currentUser = newUser(); | |
66 } | |
67 }, | |
68 actions: { | |
69 deleteUser({ commit }, data) { | |
70 const { name } = data; | |
71 return new Promise((resolve, reject) => { | |
72 HTTP.delete("/users/" + name, { | |
73 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
74 }) | |
75 .then(response => { | |
76 commit("clearCurrentUser"); | |
77 commit("setUserDetailsInvisible"); | |
78 resolve(response); | |
79 }) | |
80 .catch(error => { | |
81 reject(error); | |
82 }); | |
83 }); | |
84 }, | |
85 saveCurrentUser({ commit }, data) { | |
86 const { path, user } = data; | |
87 if (user.isNew) { | |
88 return new Promise((resolve, reject) => { | |
89 HTTP.post("/users", user, { | |
90 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
91 }) | |
92 .then(response => { | |
93 commit("setUserDetailsInvisible"); | |
94 commit("clearCurrentUser"); | |
95 resolve(response); | |
96 }) | |
97 .catch(error => { | |
98 reject(error); | |
99 }); | |
100 }); | |
101 } else { | |
102 return new Promise((resolve, reject) => { | |
103 HTTP.put("/users/" + path, user, { | |
104 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
105 }) | |
106 .then(response => { | |
107 commit("setUserDetailsInvisible"); | |
108 commit("clearCurrentUser"); | |
109 resolve(response); | |
110 }) | |
111 .catch(error => { | |
112 reject(error); | |
113 }); | |
114 }); | |
115 } | |
116 }, | |
117 loadUsers({ commit }) { | |
118 return new Promise((resolve, reject) => { | |
119 HTTP.get("/users", { | |
120 headers: { "X-Gemma-Auth": localStorage.getItem("token") } | |
121 }) | |
122 .then(response => { | |
123 commit("usersLoaded", response.data); | |
124 resolve(response); | |
125 }) | |
126 .catch(error => { | |
127 reject(error); | |
128 }); | |
129 }); | |
130 } | |
131 } | |
132 }; | |
133 | |
134 export default UserManagement; |