update from RIFT as of 696b75d2fe9fb046261b08c616f1bcf6c0b54a9b third try
[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.selectedDomain = null;
19 this.roles = ['rw-rbac-platform:super-admin', 'rw-rbac-platform:platform-admin', 'rw-rbac-platform:platform-oper'
20 // 'some_other_role', 'yet_another_role', 'operator_role', 'some_other_role', 'yet_another_role'
21 ];
22 this.users = [];
23 this.domains = [];
24 this.activeIndex = null;
25 this.isReadOnly = true;
26 this.projectOpen = false;
27 this.hideColumns = false;
28 this.isEdit = false;
29 // this.exportPublicMethods({})
30 }
31 /**
32 * [handleFieldUpdate description]
33 * @param {Object} data {
34 * [store_property] : [value]
35 * }
36 * @return {[type]} [description]
37 */
38 handleUpdateInput(data) {
39 this.setState(data);
40 }
41 handleAddProjectItem(item) {
42 let projectRoles = this.projectRoles;
43 projectRoles.push('');
44 this.setState({projectRoles});
45 }
46 handleRemoveProjectItem(i) {
47 let projectRoles = this.projectRoles;
48 projectRoles.splice(i, 1);
49 console.log('Removing', projectRoles)
50 this.setState({projectRoles});
51 }
52 handleUpdateProjectRole(data) {
53 let i = data[0];
54 let e = data[1];
55 let projectRoles = this.projectRoles
56 projectRoles[i] = JSON.parse(e.currentTarget.value);
57 this.setState({
58 projectRoles
59 });
60 }
61 editPlatform(isReadOnly) {
62 let state = _.merge({
63 isEdit: true,
64 isReadOnly: isReadOnly,
65 }, {
66 'platformUsers': this.cachedUsers
67 });
68 this.setState(state)
69 }
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 handleSelectedDomain(event) {
143 let domain = JSON.parse(event.target.value);
144 this.setState({
145 selectedDomain: domain
146 });
147 }
148 handleAddUser() {
149 let u = JSON.parse(this.selectedUser);
150 let r = this.selectedRole;
151 let platformUsers = this.platformUsers;
152 console.log('adding user')
153 platformUsers.push({
154 'user-name': u['user-name'],
155 'user-domain': u['user-domain'],
156 "role":[{
157 "role": r
158 }
159 ]
160 })
161 this.setState({platformUsers, selectedUser: null})
162 }
163 handleToggleUserRoleInProject(data) {
164 let self = this;
165 let {userIndex, roleIndex, checked} = data;
166 let platformUsers = this.platformUsers;
167 let selectedRole = self.roles[roleIndex];
168 if(checked) {
169 if(!platformUsers[userIndex].role) platformUsers[userIndex].role = [];
170 platformUsers[userIndex].role.push({
171 role: selectedRole
172 })
173 } else {
174 let role = platformUsers[userIndex].role;
175 platformUsers[userIndex].role.splice(_.findIndex(role, function(r) { return r.role == selectedRole; }), 1)
176 }
177 self.setState({platformUsers});
178
179 }
180 handleUpdateUserRoleInProject(data) {
181 let {userIndex, roleIndex, value} = data;
182 let platformUsers = this.platformUsers;
183 platformUsers[userIndex].role[roleIndex].role = value;
184
185 }
186 addRoleToUserInProject(userIndex) {
187 let platformUsers = this.platformUsers;
188 if(!platformUsers[userIndex].role) {
189 platformUsers[userIndex].role = [];
190 }
191 platformUsers[userIndex].role.push({
192 'role': null
193 });
194 this.setState({
195 platformUsers
196 })
197 }
198 handleRemoveRoleFromUserInProject (data) {
199 let {userIndex, roleIndex} = data;
200 let platformUsers = this.platformUsers;
201 platformUsers[userIndex].role.splice(roleIndex, 1);
202 this.setState({
203 platformUsers
204 })
205 }
206 handleRemoveUserFromProject (userIndex) {
207 let platformUsers = this.platformUsers;
208 platformUsers.splice(userIndex, 1);
209 this.setState({
210 platformUsers
211 })
212 }
213 getProjectsSuccess(projects) {
214 this.alt.actions.global.hideScreenLoader.defer();
215 this.setState({projects: projects});
216 }
217 getPlatformSuccess(platform) {
218 this.alt.actions.global.hideScreenLoader.defer();
219 let platformUsers = platform && platform.user || [];
220 let state = _.merge({
221 platform: platform,
222 projectOpen: true,
223 isEdit: true,
224 isReadOnly: true,
225 platformUsers: platformUsers,
226 cachedUsers: platformUsers
227 });
228 this.setState(state)
229 }
230 getPlatformRoleUsersSuccess(users) {
231 console.log(users)
232 this.alt.actions.global.hideScreenLoader.defer();
233 let domains = users && users.reduce(function(arr, u) {
234 if (arr.indexOf(u['user-domain']) == -1) {
235 arr.push(u['user-domain']);
236 return arr;
237 } else {
238 return arr
239 }
240 }, []);
241 this.setState({users, domains, selectedDomain: domains[0]});
242 }
243 updatePlatformSuccess() {
244 this.alt.actions.global.hideScreenLoader.defer();
245 let platformUsers = this.platformUsers;
246 this.setState({
247 platformUsers,
248 cachedUsers: platformUsers,
249 isEdit: true,
250 isReadOnly: true
251 })
252 }
253 deleteProjectSuccess() {
254 this.alt.actions.global.hideScreenLoader.defer();
255 let projects = this.projects;
256 projects.splice(this.activeIndex, 1);
257 this.setState({projects, projectOpen: false})
258 }
259 createProjectSuccess() {
260 this.alt.actions.global.hideScreenLoader.defer();
261 let projects = this.projects || [];
262 projects.push({
263 'name': this['name'],
264 'description': this['description']
265 });
266 let newState = {
267 projects,
268 isEdit: true,
269 isReadOnly: true,
270 activeIndex: projects.length - 1
271 };
272 _.merge(newState)
273 this.setState(newState);
274 }
275 }