Revert "BUG-410 -- update RIFT platform"
[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 isEditUser: false,
168 isEdit: false,
169 userOpen: true,
170 activeIndex: null,
171 isReadOnly: false
172 }
173 ))
174 }
175
176 getUsersSuccess(users) {
177 this.alt.actions.global.hideScreenLoader.defer();
178 this.setState({users});
179 }
180 updateUserSuccess() {
181 this.alt.actions.global.hideScreenLoader.defer();
182 let users = this.users || [];
183 users[this.activeIndex] = {
184 'user-name': this['user-name'],
185 'user-domain': this['user-domain'],
186 platformRoles: this.platformRoles,
187 disabled: this.disabled,
188 projectRoles: this.projectRoles
189 }
190 this.setState({
191 users,
192 isEdit: true,
193 isReadOnly: true
194 })
195 }
196 deleteUserSuccess() {
197 this.alt.actions.global.hideScreenLoader.defer();
198 let users = this.users;
199 users.splice(this.activeIndex, 1);
200 this.setState({users, userOpen: false})
201 }
202 createUserSuccess() {
203 this.alt.actions.global.hideScreenLoader.defer();
204 let users = this.users || [];
205 users.push({
206 'user-name': this['user-name'],
207 'user-domain': this['user-domain'],
208 platformRoles: this.platformRoles,
209 disabled: this.disabled,
210 projectRoles: this.projectRoles,
211 });
212 let newState = {
213 users,
214 isEdit: true,
215 isReadOnly: true,
216 activeIndex: users.length - 1
217 };
218 _.merge(newState, this.resetPassword())
219 this.setState(newState);
220 }
221 }