Added projects to user management
[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 projects: user.projects,
78 currentPassword: user.password
79 }
80 let state = _.merge({
81 activeIndex: userIndex,
82 userOpen: true,
83 isEdit: true,
84 isReadOnly: true
85 }, ActiveUser);
86 this.setState(state)
87 }
88 editUser(isEdit) {
89 this.setState({
90 isEditUser: !isEdit,
91 isReadOnly: isEdit
92 })
93 }
94 handleCloseUserPanel() {
95 this.setState({
96 userOpen: false,
97 isEdit: false,
98 isReadOnly: true
99 })
100 }
101 handleHideColumns(e) {
102 if(this.userOpen && e.currentTarget.classList.contains('hideColumns')) {
103 this.setState({
104 hideColumns: true
105 })
106 } else {
107 this.setState({
108 hideColumns: false
109 })
110 }
111 }
112 handleDisabledChange(isDisabled){
113 this.setState({
114 disabled: isDisabled
115 })
116 }
117 handlePlatformRoleUpdate(data){
118 let platform_role = data[0];
119 let checked = data[1];
120 let platformRoles = this.platformRoles;
121 platformRoles[platform_role] = checked;
122 this.setState({
123 platformRoles
124 })
125 }
126 resetUser() {
127 let username = '';
128 let domain = 'system';
129 let disabled = "FALSE";
130 let platformRoles = {
131 super_admin: false,
132 platform_admin: false,
133 platform_oper: false
134 };
135 let projectRoles = [];
136 let currentPassword = '';
137 let oldPassword = '';
138 let newPassword = '';
139 let confirmPassword = '';
140 return {
141 'user-name' : username,
142 'user-domain' : domain,
143 disabled,
144 platformRoles,
145 projectRoles,
146 currentPassword,
147 'old-password': oldPassword,
148 'new-password': newPassword,
149 'confirm-password': confirmPassword
150 }
151 }
152 resetPassword() {
153 let currentPassword = '';
154 let oldPassword = '';
155 let newPassword = '';
156 let confirmPassword = '';
157 return {
158 currentPassword,
159 'old-password': oldPassword,
160 'new-password': newPassword,
161 'confirm-password': confirmPassword
162 }
163 }
164 handleAddUser() {
165 this.setState(_.merge( this.resetUser() ,
166 {
167 isEdit: false,
168 userOpen: true,
169 activeIndex: null,
170 isReadOnly: false
171 }
172 ))
173 }
174 handleCreateUser() {
175
176 }
177 handleDisabledChange(value) {
178 this.disabled = value;
179 }
180 handleUpdateUser() {
181
182 }
183
184 getUsersSuccess(users) {
185 this.alt.actions.global.hideScreenLoader.defer();
186 this.setState({users});
187 }
188 updateUserSuccess() {
189 this.alt.actions.global.hideScreenLoader.defer();
190 let users = this.users || [];
191 users[this.activeIndex] = {
192 'user-name': this['user-name'],
193 'user-domain': this['user-domain'],
194 platformRoles: this.platformRoles,
195 disabled: this.disabled,
196 projectRoles: this.projectRoles
197 }
198 this.setState({
199 users,
200 isEdit: true,
201 isReadOnly: true
202 })
203 }
204 deleteUserSuccess() {
205 this.alt.actions.global.hideScreenLoader.defer();
206 let users = this.users;
207 users.splice(this.activeIndex, 1);
208 this.setState({users, userOpen: false})
209 }
210 createUserSuccess() {
211 this.alt.actions.global.hideScreenLoader.defer();
212 let users = this.users || [];
213 users.push({
214 'user-name': this['user-name'],
215 'user-domain': this['user-domain'],
216 platformRoles: this.platformRoles,
217 disabled: this.disabled,
218 projectRoles: this.projectRoles,
219 });
220 let newState = {
221 users,
222 isEdit: true,
223 isReadOnly: true,
224 activeIndex: users.length - 1
225 };
226 _.merge(newState, this.resetPassword())
227 this.setState(newState);
228 }
229 }