PlatformRoleMgmt: Appropriate user is now deleted
[osm/UI.git] / skyquake / plugins / user_management / src / platformRoleManagement / platformRoleManagementStore.js
1 /*
2 * STANDARD_RIFT_IO_COPYRIGHT
3 */
4 import PlatformRoleManagementActions from './platformRoleManagementActions.js';
5 import PlatformRoleManagementSource from './platformRoleManagementSource.js';
6 import _ from 'lodash';
7 export default class PlatformRoleManagementStore {
8 constructor() {
9 this.actions = PlatformRoleManagementActions(this.alt);
10 this.bindActions(this.actions);
11 this.registerAsync(PlatformRoleManagementSource);
12 this.projects = [];
13 this['name'] = '';
14 this['description'] = 'Some Description';
15 this.platformUsers = [];
16 this.selectedUser = null;
17 this.selectedRole = null;
18 this.roles = ['rw-rbac-platform:platform-admin', 'rw-rbac-platform:platform-oper', 'rw-rbac-platform:super-admin'
19 // 'some_other_role', 'yet_another_role', 'operator_role', 'some_other_role', 'yet_another_role'
20 ];
21 this.users = [];
22 this.activeIndex = null;
23 this.isReadOnly = true;
24 this.projectOpen = false;
25 this.hideColumns = false;
26 this.isEdit = false;
27 // this.exportPublicMethods({})
28 }
29 /**
30 * [handleFieldUpdate description]
31 * @param {Object} data {
32 * [store_property] : [value]
33 * }
34 * @return {[type]} [description]
35 */
36 handleUpdateInput(data) {
37 this.setState(data);
38 }
39 handleAddProjectItem(item) {
40 let projectRoles = this.projectRoles;
41 projectRoles.push('');
42 this.setState({projectRoles});
43 }
44 handleRemoveProjectItem(i) {
45 let projectRoles = this.projectRoles;
46 projectRoles.splice(i, 1);
47 console.log('Removing', projectRoles)
48 this.setState({projectRoles});
49 }
50 handleUpdateProjectRole(data) {
51 let i = data[0];
52 let e = data[1];
53 let projectRoles = this.projectRoles
54 projectRoles[i] = JSON.parse(e.currentTarget.value);
55 this.setState({
56 projectRoles
57 });
58 }
59 editPlatform(isReadOnly) {
60 let state = _.merge({
61 isEdit: true,
62 isReadOnly: isReadOnly,
63 }, {
64 'platformUsers': this.cachedUsers
65 });
66 this.setState(state)
67 }
68
69 handleCancelEdit() {
70
71 }
72 handleCloseProjectPanel() {
73 this.setState({
74 projectOpen: false,
75 isEdit: false,
76 isReadOnly: true
77 })
78 }
79 handleHideColumns(e) {
80 if(this.projectOpen && e.currentTarget.classList.contains('hideColumns')) {
81 this.setState({
82 hideColumns: true
83 })
84 } else {
85 this.setState({
86 hideColumns: false
87 })
88 }
89 }
90 handleDisabledChange(isDisabled){
91 this.setState({
92 disabled: isDisabled
93 })
94 }
95 handlePlatformRoleUpdate(data){
96 let platform_role = data[0];
97 let checked = data[1];
98 let platformRoles = this.platformRoles;
99 platformRoles[platform_role] = checked;
100 this.setState({
101 platformRoles
102 })
103 }
104 handleSelectedUser(event) {
105 this.setState({
106 selectedUser: JSON.parse(event.currentTarget.value)
107 })
108 }
109
110 handleSelectedRole(event) {
111 this.setState({
112 selectedRole: JSON.parse(event.currentTarget.value)
113 })
114 }
115 resetProject() {
116 let name = '';
117 let description = '';
118 return {
119 'name' : name,
120 'description' : description
121 }
122 }
123 handleAddProject() {
124 this.setState(_.merge( this.resetProject() ,
125 {
126 isEdit: false,
127 projectOpen: true,
128 activeIndex: null,
129 isReadOnly: false,
130 platformUsers: []
131 }
132 ))
133 }
134
135 handleUpdateSelectedUser(user) {
136 this.setState({
137 selectedUser: JSON.parse(user)
138 });
139 }
140 handleAddUser() {
141 let u = JSON.parse(this.selectedUser);
142 let r = this.selectedRole;
143 let platformUsers = this.platformUsers;
144 console.log('adding user')
145 platformUsers.push({
146 'user-name': u['user-name'],
147 'user-domain': u['user-domain'],
148 "role":[{
149 "role": r
150 }
151 ]
152 })
153 this.setState({platformUsers, selectedUser: null})
154 }
155 handleToggleUserRoleInProject(data) {
156 let self = this;
157 let {userIndex, roleIndex, checked} = data;
158 let platformUsers = this.platformUsers;
159 let selectedRole = self.roles[roleIndex];
160 if(checked) {
161 if(!platformUsers[userIndex].role) platformUsers[userIndex].role = [];
162 platformUsers[userIndex].role.push({
163 role: selectedRole
164 })
165 } else {
166 let role = platformUsers[userIndex].role;
167 platformUsers[userIndex].role.splice(_.findIndex(role, function(r) { return r.role == selectedRole; }), 1)
168 }
169 self.setState({platformUsers});
170
171 }
172 handleUpdateUserRoleInProject(data) {
173 let {userIndex, roleIndex, value} = data;
174 let platformUsers = this.platformUsers;
175 platformUsers[userIndex].role[roleIndex].role = value;
176
177 }
178 addRoleToUserInProject(userIndex) {
179 let platformUsers = this.platformUsers;
180 if(!platformUsers[userIndex].role) {
181 platformUsers[userIndex].role = [];
182 }
183 platformUsers[userIndex].role.push({
184 'role': null
185 });
186 this.setState({
187 platformUsers
188 })
189 }
190 handleRemoveRoleFromUserInProject (data) {
191 let {userIndex, roleIndex} = data;
192 let platformUsers = this.platformUsers;
193 platformUsers[userIndex].role.splice(roleIndex, 1);
194 this.setState({
195 platformUsers
196 })
197 }
198 handleRemoveUserFromProject (userIndex) {
199 let platformUsers = this.platformUsers;
200 platformUsers.splice(userIndex, 1);
201 this.setState({
202 platformUsers
203 })
204 }
205 getProjectsSuccess(projects) {
206 this.alt.actions.global.hideScreenLoader.defer();
207 this.setState({projects: projects});
208 }
209 getPlatformSuccess(platform) {
210 this.alt.actions.global.hideScreenLoader.defer();
211 let platformUsers = platform && platform.user || [];
212 let state = _.merge({
213 platform: platform,
214 projectOpen: true,
215 isEdit: true,
216 isReadOnly: true,
217 platformUsers: platformUsers,
218 cachedUsers: platformUsers
219 });
220 this.setState(state)
221 }
222 getPlatformRoleUsersSuccess(users) {
223 console.log(users)
224 this.alt.actions.global.hideScreenLoader.defer();
225 this.setState({users});
226 }
227 updatePlatformSuccess() {
228 this.alt.actions.global.hideScreenLoader.defer();
229 let platformUsers = this.platformUsers;
230 this.setState({
231 platformUsers,
232 cachedUsers: platformUsers,
233 isEdit: true,
234 isReadOnly: true
235 })
236 }
237 deleteProjectSuccess() {
238 this.alt.actions.global.hideScreenLoader.defer();
239 let projects = this.projects;
240 projects.splice(this.activeIndex, 1);
241 this.setState({projects, projectOpen: false})
242 }
243 createProjectSuccess() {
244 this.alt.actions.global.hideScreenLoader.defer();
245 let projects = this.projects || [];
246 projects.push({
247 'name': this['name'],
248 'description': this['description']
249 });
250 let newState = {
251 projects,
252 isEdit: true,
253 isReadOnly: true,
254 activeIndex: projects.length - 1
255 };
256 _.merge(newState)
257 this.setState(newState);
258 }
259 }