PlatformRoleManagement: removing current user from payload, as user can not edit...
[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 // editPlatform(isReadOnly) {
69 // this.platformEdit(isReadOnly);
70 // }
71 handleCancelEdit() {
72
73 }
74 handleCloseProjectPanel() {
75 this.setState({
76 projectOpen: false,
77 isEdit: false,
78 isReadOnly: true
79 })
80 }
81 handleHideColumns(e) {
82 if(this.projectOpen && e.currentTarget.classList.contains('hideColumns')) {
83 this.setState({
84 hideColumns: true
85 })
86 } else {
87 this.setState({
88 hideColumns: false
89 })
90 }
91 }
92 handleDisabledChange(isDisabled){
93 this.setState({
94 disabled: isDisabled
95 })
96 }
97 handlePlatformRoleUpdate(data){
98 let platform_role = data[0];
99 let checked = data[1];
100 let platformRoles = this.platformRoles;
101 platformRoles[platform_role] = checked;
102 this.setState({
103 platformRoles
104 })
105 }
106 handleSelectedUser(event) {
107 this.setState({
108 selectedUser: JSON.parse(event.currentTarget.value)
109 })
110 }
111
112 handleSelectedRole(event) {
113 this.setState({
114 selectedRole: JSON.parse(event.currentTarget.value)
115 })
116 }
117 resetProject() {
118 let name = '';
119 let description = '';
120 return {
121 'name' : name,
122 'description' : description
123 }
124 }
125 handleAddProject() {
126 this.setState(_.merge( this.resetProject() ,
127 {
128 isEdit: false,
129 projectOpen: true,
130 activeIndex: null,
131 isReadOnly: false,
132 platformUsers: []
133 }
134 ))
135 }
136
137 handleUpdateSelectedUser(user) {
138 this.setState({
139 selectedUser: JSON.parse(user)
140 });
141 }
142 handleAddUser() {
143 let u = JSON.parse(this.selectedUser);
144 let r = this.selectedRole;
145 let platformUsers = this.platformUsers;
146 console.log('adding user')
147 platformUsers.push({
148 'user-name': u['user-name'],
149 'user-domain': u['user-domain'],
150 "role":[{
151 "role": r
152 }
153 ]
154 })
155 this.setState({platformUsers, selectedUser: null})
156 }
157 handleToggleUserRoleInProject(data) {
158 let self = this;
159 let {userIndex, roleIndex, checked} = data;
160 let platformUsers = this.platformUsers;
161 let selectedRole = self.roles[roleIndex];
162 if(checked) {
163 if(!platformUsers[userIndex].role) platformUsers[userIndex].role = [];
164 platformUsers[userIndex].role.push({
165 role: selectedRole
166 })
167 } else {
168 let role = platformUsers[userIndex].role;
169 platformUsers[userIndex].role.splice(_.findIndex(role, function(r) { return r.role == selectedRole; }), 1)
170 }
171 self.setState({platformUsers});
172
173 }
174 handleUpdateUserRoleInProject(data) {
175 let {userIndex, roleIndex, value} = data;
176 let platformUsers = this.platformUsers;
177 platformUsers[userIndex].role[roleIndex].role = value;
178
179 }
180 addRoleToUserInProject(userIndex) {
181 let platformUsers = this.platformUsers;
182 if(!platformUsers[userIndex].role) {
183 platformUsers[userIndex].role = [];
184 }
185 platformUsers[userIndex].role.push({
186 'role': null
187 });
188 this.setState({
189 platformUsers
190 })
191 }
192 handleRemoveRoleFromUserInProject (data) {
193 let {userIndex, roleIndex} = data;
194 let platformUsers = this.platformUsers;
195 platformUsers[userIndex].role.splice(roleIndex, 1);
196 this.setState({
197 platformUsers
198 })
199 }
200 handleRemoveUserFromProject (userIndex) {
201 let platformUsers = this.platformUsers;
202 platformUsers.splice(userIndex, 1);
203 this.setState({
204 platformUsers
205 })
206 }
207 getProjectsSuccess(projects) {
208 this.alt.actions.global.hideScreenLoader.defer();
209 this.setState({projects: projects});
210 }
211 getPlatformSuccess(platform) {
212 this.alt.actions.global.hideScreenLoader.defer();
213 let platformUsers = platform && platform.user || [];
214 let state = _.merge({
215 platform: platform,
216 projectOpen: true,
217 isEdit: true,
218 isReadOnly: true,
219 platformUsers: platformUsers,
220 cachedUsers: platformUsers
221 });
222 this.setState(state)
223 }
224 getPlatformRoleUsersSuccess(users) {
225 console.log(users)
226 this.alt.actions.global.hideScreenLoader.defer();
227 this.setState({users});
228 }
229 updatePlatformSuccess() {
230 this.alt.actions.global.hideScreenLoader.defer();
231 let platformUsers = this.platformUsers;
232 this.setState({
233 platformUsers,
234 cachedUsers: platformUsers,
235 isEdit: true,
236 isReadOnly: true
237 })
238 }
239 deleteProjectSuccess() {
240 this.alt.actions.global.hideScreenLoader.defer();
241 let projects = this.projects;
242 projects.splice(this.activeIndex, 1);
243 this.setState({projects, projectOpen: false})
244 }
245 createProjectSuccess() {
246 this.alt.actions.global.hideScreenLoader.defer();
247 let projects = this.projects || [];
248 projects.push({
249 'name': this['name'],
250 'description': this['description']
251 });
252 let newState = {
253 projects,
254 isEdit: true,
255 isReadOnly: true,
256 activeIndex: projects.length - 1
257 };
258 _.merge(newState)
259 this.setState(newState);
260 }
261 }