Mercurial > gemma
annotate client/src/stores/usermanagement.js @ 555:f66116b3a249
fix: Reset collapse state of sidebar
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Mon, 03 Sep 2018 12:57:33 +0200 |
parents | 5a9dde6951ae |
children | 4bc27eea4f09 |
rev | line source |
---|---|
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
1 import { HTTP } from "../lib/http"; |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
2 |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
3 const newUser = () => { |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
4 return { |
492
5a9dde6951ae
fix: N.N as Username is now a placeholder
Thomas Junk <thomas.junk@intevation.de>
parents:
406
diff
changeset
|
5 user: "", |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
6 email: "", |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
7 country: null, |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
8 role: null, |
389
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
9 isNew: true, |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
10 password: "" |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
11 }; |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
12 }; |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
13 |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
14 const UserManagement = { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
15 namespaced: true, |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
16 state: { |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
17 users: null, |
379
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
18 currentUser: null, |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
19 userDetailsVisible: false |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
20 }, |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
21 getters: { |
379
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
22 isUserDetailsVisible: state => { |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
23 return state.userDetailsVisible; |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
24 }, |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
25 currentUser: state => { |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
26 return state.currentUser; |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
27 }, |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
28 users: state => { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
29 return state.users; |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
30 }, |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
31 getUserByName: state => name => { |
300
af29878be602
feat: User table selectable
Thomas Junk <thomas.junk@intevation.de>
parents:
299
diff
changeset
|
32 return state.users.find(user => { |
af29878be602
feat: User table selectable
Thomas Junk <thomas.junk@intevation.de>
parents:
299
diff
changeset
|
33 return user.user === name; |
af29878be602
feat: User table selectable
Thomas Junk <thomas.junk@intevation.de>
parents:
299
diff
changeset
|
34 }); |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
35 } |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
36 }, |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
37 mutations: { |
379
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
38 setUserDetailsInvisible: state => { |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
39 state.userDetailsVisible = false; |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
40 }, |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
41 setUserDetailsVisible: state => { |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
42 state.userDetailsVisible = true; |
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
43 }, |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
44 usersLoaded: (state, data) => { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
45 state.users = data.users; |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
46 }, |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
47 setCurrentUser: (state, data) => { |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
48 state.currentUser = data; |
379
0a9aaf21f69f
feat: usermanagement
Thomas Junk <thomas.junk@intevation.de>
parents:
376
diff
changeset
|
49 state.userDetailsVisible = true; |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
50 }, |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
51 clearCurrentUser: state => { |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
52 state.currentUser = newUser(); |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
53 } |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
54 }, |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
55 actions: { |
406
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
56 deleteUser({ commit }, data) { |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
57 const { name } = data; |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
58 return new Promise((resolve, reject) => { |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
59 HTTP.delete("/users/" + name, { |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
60 headers: { "X-Gemma-Auth": localStorage.getItem("token") } |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
61 }) |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
62 .then(response => { |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
63 commit("clearCurrentUser"); |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
64 commit("setUserDetailsInvisible"); |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
65 resolve(response); |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
66 }) |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
67 .catch(error => { |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
68 reject(error); |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
69 }); |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
70 }); |
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
71 }, |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
72 saveCurrentUser({ commit }, data) { |
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
73 const { path, user } = data; |
389
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
74 if (user.isNew) { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
75 return new Promise((resolve, reject) => { |
406
40e7ab3df32c
feat: Basic CRUD for usermanagement etd
Thomas Junk <thomas.junk@intevation.de>
parents:
389
diff
changeset
|
76 HTTP.post("/users", user, { |
389
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
77 headers: { "X-Gemma-Auth": localStorage.getItem("token") } |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
78 }) |
389
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
79 .then(response => { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
80 commit("setUserDetailsInvisible"); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
81 commit("clearCurrentUser"); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
82 resolve(response); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
83 }) |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
84 .catch(error => { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
85 reject(error); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
86 }); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
87 }); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
88 } else { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
89 return new Promise((resolve, reject) => { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
90 HTTP.put("/users/" + path, user, { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
91 headers: { "X-Gemma-Auth": localStorage.getItem("token") } |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
92 }) |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
93 .then(response => { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
94 commit("setUserDetailsInvisible"); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
95 commit("clearCurrentUser"); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
96 resolve(response); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
97 }) |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
98 .catch(error => { |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
99 reject(error); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
100 }); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
101 }); |
e7d5383bc358
feat: Primitive validation and error messages
Thomas Junk <thomas.junk@intevation.de>
parents:
379
diff
changeset
|
102 } |
376
e42f42eb9353
refactor: Userdetails refactored to card model
Thomas Junk <thomas.junk@intevation.de>
parents:
373
diff
changeset
|
103 }, |
289
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
104 loadUsers({ commit }) { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
105 return new Promise((resolve, reject) => { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
106 HTTP.get("/users", { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
107 headers: { "X-Gemma-Auth": localStorage.getItem("token") } |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
108 }) |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
109 .then(response => { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
110 commit("usersLoaded", response.data); |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
111 resolve(response); |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
112 }) |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
113 .catch(error => { |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
114 reject(error); |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
115 }); |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
116 }); |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
117 } |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
118 } |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
119 }; |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
120 |
aee175e3f82c
feat: Listing of users on management page
Thomas Junk <thomas.junk@intevation.de>
parents:
diff
changeset
|
121 export default UserManagement; |