User Management Dashboard:
[osm/UI.git] / skyquake / plugins / user_management / src / dashboard / userMgmtStore.js
1 /*
2 * STANDARD_RIFT_IO_COPYRIGHT
3 */
4 import UserManagementActions from './userMgmtActions.js';
5 import UserManagementSource from './userMgmtSource.js';
6 import _ from 'lodash';
7 export default class UserManagementStore {
8 constructor() {
9 this.actions = UserManagementActions(this.alt);
10 this.bindActions(this.actions);
11 this.registerAsync(UserManagementSource);
12 this.users = [];
13 this['user-name'] = '';
14 this['user-domain'] = 'system';
15 this.disabled = "FALSE";
16 this.platformRoles = {
17 super_admin: false,
18 platform_admin: false,
19 platform_oper: false
20 };
21 this.projectRoles = ['Project:Role'];
22 this.projectRolesOptions = ['Choose your adventure', 'Project:Role', 'Project:Another Role'];
23 this.currentPassword = '';
24 this['old-password'] = '';
25 this['new-password'] = '';
26 this['confirm-password'] = '';
27
28 this.activeIndex = null;
29 this.isReadOnly = true;
30 this.userOpen = false;
31 this.hideColumns = false;
32 //There is probably a better way of handling the view/edit/readonly matrix conditions for some of these inputs. Should definitely revist
33 this.isEdit = false;
34 this.isEditUser = false;
35 // this.exportPublicMethods({})
36 }
37 /**
38 * [handleFieldUpdate description]
39 * @param {Object} data {
40 * [store_property] : [value]
41 * }
42 * @return {[type]} [description]
43 */
44 handleUpdateInput(data) {
45 this.setState(data);
46 }
47 handleAddProjectItem(item) {
48 let projectRoles = this.projectRoles;
49 projectRoles.push('');
50 this.setState({projectRoles});
51 }
52 handleRemoveProjectItem(i) {
53 let projectRoles = this.projectRoles;
54 projectRoles.splice(i, 1);
55 console.log('Removing', projectRoles)
56 this.setState({projectRoles});
57 }
58 handleUpdateProjectRole(data) {
59 let i = data[0];
60 let e = data[1];
61 let projectRoles = this.projectRoles
62 projectRoles[i] = JSON.parse(e.currentTarget.value);
63 this.setState({
64 projectRoles
65 });
66 }
67 viewUser(data) {
68 let user = data[0];
69 let userIndex = data[1];
70
71 let ActiveUser = {
72 'user-name': user['user-name'],
73 'user-domain': user['user-domain'],
74 platformRoles: user.platformRoles || this.platformRoles,
75 disabled: user.hasOwnProperty('disabled').toString().toUpperCase(),
76 projectRoles: user.projectRoles || this.projectRoles,
77 currentPassword: user.password
78 }
79 let state = _.merge({
80 activeIndex: userIndex,
81 userOpen: true,
82 isEdit: true,
83 isReadOnly: true
84 }, ActiveUser);
85 this.setState(state)
86 }
87 editUser(isEdit) {
88 this.setState({
89 isEditUser: !isEdit,
90 isReadOnly: isEdit
91 })
92 }
93 handleCloseUserPanel() {
94 this.setState({
95 userOpen: false,
96 isEdit: false,
97 isReadOnly: true
98 })
99 }
100 handleHideColumns(e) {
101 if(this.userOpen && e.currentTarget.classList.contains('hideColumns')) {
102 this.setState({
103 hideColumns: true
104 })
105 } else {
106 this.setState({
107 hideColumns: false
108 })
109 }
110 }
111 handleDisabledChange(isDisabled){
112 this.setState({
113 disabled: isDisabled
114 })
115 }
116 handlePlatformRoleUpdate(data){
117 let platform_role = data[0];
118 let checked = data[1];
119 let platformRoles = this.platformRoles;
120 platformRoles[platform_role] = checked;
121 this.setState({
122 platformRoles
123 })
124 }
125 resetUser() {
126 let username = '';
127 let domain = 'system';
128 let disabled = "FALSE";
129 let platformRoles = {
130 super_admin: false,
131 platform_admin: false,
132 platform_oper: false
133 };
134 let projectRoles = [];
135 let currentPassword = '';
136 let oldPassword = '';
137 let newPassword = '';
138 let confirmPassword = '';
139 return {
140 'user-name' : username,
141 'user-domain' : domain,
142 disabled,
143 platformRoles,
144 projectRoles,
145 currentPassword,
146 'old-password': oldPassword,
147 'new-password': newPassword,
148 'confirm-password': confirmPassword
149 }
150 }
151 resetPassword() {
152 let currentPassword = '';
153 let oldPassword = '';
154 let newPassword = '';
155 let confirmPassword = '';
156 return {
157 currentPassword,
158 'old-password': oldPassword,
159 'new-password': newPassword,
160 'confirm-password': confirmPassword
161 }
162 }
163 handleAddUser() {
164 this.setState(_.merge( this.resetUser() ,
165 {
166 isEdit: false,
167 userOpen: true,
168 activeIndex: null,
169 isReadOnly: false
170 }
171 ))
172 }
173 handleCreateUser() {
174
175 }
176 handleDisabledChange(value) {
177 this.disabled = value;
178 }
179 handleUpdateUser() {
180
181 }
182
183 getUsersSuccess(users) {
184 this.alt.actions.global.hideScreenLoader.defer();
185 this.setState({users});
186 }
187 updateUserSuccess() {
188 this.alt.actions.global.hideScreenLoader.defer();
189 let users = this.users || [];
190 users[this.activeIndex] = {
191 'user-name': this['user-name'],
192 'user-domain': this['user-domain'],
193 platformRoles: this.platformRoles,
194 disabled: this.disabled,
195 projectRoles: this.projectRoles
196 }
197 this.setState({
198 users,
199 isEdit: true,
200 isReadOnly: true
201 })
202 }
203 deleteUserSuccess() {
204 this.alt.actions.global.hideScreenLoader.defer();
205 let users = this.users;
206 users.splice(this.activeIndex, 1);
207 this.setState({users, userOpen: false})
208 }
209 createUserSuccess() {
210 this.alt.actions.global.hideScreenLoader.defer();
211 let users = this.users || [];
212 users.push({
213 'user-name': this['user-name'],
214 'user-domain': this['user-domain'],
215 platformRoles: this.platformRoles,
216 disabled: this.disabled,
217 projectRoles: this.projectRoles,
218 });
219 let newState = {
220 users,
221 isEdit: true,
222 isReadOnly: true,
223 activeIndex: users.length - 1
224 };
225 _.merge(newState, this.resetPassword())
226 this.setState(newState);
227 }
228 }