2 * STANDARD_RIFT_IO_COPYRIGHT
4 import PlatformRoleManagementActions
from './platformRoleManagementActions.js';
5 import PlatformRoleManagementSource
from './platformRoleManagementSource.js';
6 import _
from 'lodash';
7 export default class PlatformRoleManagementStore
{
9 this.actions
= PlatformRoleManagementActions(this.alt
);
10 this.bindActions(this.actions
);
11 this.registerAsync(PlatformRoleManagementSource
);
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'
24 this.activeIndex
= null;
25 this.isReadOnly
= true;
26 this.projectOpen
= false;
27 this.hideColumns
= false;
29 // this.exportPublicMethods({})
32 * [handleFieldUpdate description]
33 * @param {Object} data {
34 * [store_property] : [value]
36 * @return {[type]} [description]
38 handleUpdateInput(data
) {
41 handleAddProjectItem(item
) {
42 let projectRoles
= this.projectRoles
;
43 projectRoles
.push('');
44 this.setState({projectRoles
});
46 handleRemoveProjectItem(i
) {
47 let projectRoles
= this.projectRoles
;
48 projectRoles
.splice(i
, 1);
49 console
.log('Removing', projectRoles
)
50 this.setState({projectRoles
});
52 handleUpdateProjectRole(data
) {
55 let projectRoles
= this.projectRoles
56 projectRoles
[i
] = JSON
.parse(e
.currentTarget
.value
);
61 editPlatform(isReadOnly
) {
64 isReadOnly
: isReadOnly
,
66 'platformUsers': this.cachedUsers
74 handleCloseProjectPanel() {
81 handleHideColumns(e
) {
82 if(this.projectOpen
&& e
.currentTarget
.classList
.contains('hideColumns')) {
92 handleDisabledChange(isDisabled
){
97 handlePlatformRoleUpdate(data
){
98 let platform_role
= data
[0];
99 let checked
= data
[1];
100 let platformRoles
= this.platformRoles
;
101 platformRoles
[platform_role
] = checked
;
106 handleSelectedUser(event
) {
108 selectedUser
: JSON
.parse(event
.currentTarget
.value
)
112 handleSelectedRole(event
) {
114 selectedRole
: JSON
.parse(event
.currentTarget
.value
)
119 let description
= '';
122 'description' : description
126 this.setState(_
.merge( this.resetProject() ,
137 handleUpdateSelectedUser(user
) {
139 selectedUser
: JSON
.parse(user
)
142 handleSelectedDomain(event
) {
143 let domain
= JSON
.parse(event
.target
.value
);
145 selectedDomain
: domain
149 let u
= JSON
.parse(this.selectedUser
);
150 let r
= this.selectedRole
;
151 let platformUsers
= this.platformUsers
;
152 console
.log('adding user')
154 'user-name': u
['user-name'],
155 'user-domain': u
['user-domain'],
161 this.setState({platformUsers
, selectedUser
: null})
163 handleToggleUserRoleInProject(data
) {
165 let {userIndex
, roleIndex
, checked
} = data
;
166 let platformUsers
= this.platformUsers
;
167 let selectedRole
= self
.roles
[roleIndex
];
169 if(!platformUsers
[userIndex
].role
) platformUsers
[userIndex
].role
= [];
170 platformUsers
[userIndex
].role
.push({
174 let role
= platformUsers
[userIndex
].role
;
175 platformUsers
[userIndex
].role
.splice(_
.findIndex(role
, function(r
) { return r
.role
== selectedRole
; }), 1)
177 self
.setState({platformUsers
});
180 handleUpdateUserRoleInProject(data
) {
181 let {userIndex
, roleIndex
, value
} = data
;
182 let platformUsers
= this.platformUsers
;
183 platformUsers
[userIndex
].role
[roleIndex
].role
= value
;
186 addRoleToUserInProject(userIndex
) {
187 let platformUsers
= this.platformUsers
;
188 if(!platformUsers
[userIndex
].role
) {
189 platformUsers
[userIndex
].role
= [];
191 platformUsers
[userIndex
].role
.push({
198 handleRemoveRoleFromUserInProject (data
) {
199 let {userIndex
, roleIndex
} = data
;
200 let platformUsers
= this.platformUsers
;
201 platformUsers
[userIndex
].role
.splice(roleIndex
, 1);
206 handleRemoveUserFromProject (userIndex
) {
207 let platformUsers
= this.platformUsers
;
208 platformUsers
.splice(userIndex
, 1);
213 getProjectsSuccess(projects
) {
214 this.alt
.actions
.global
.hideScreenLoader
.defer();
215 this.setState({projects
: projects
});
217 getPlatformSuccess(platform
) {
218 this.alt
.actions
.global
.hideScreenLoader
.defer();
219 let platformUsers
= platform
&& platform
.user
|| [];
220 let state
= _
.merge({
225 platformUsers
: platformUsers
,
226 cachedUsers
: platformUsers
230 getPlatformRoleUsersSuccess(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']);
241 this.setState({users
, domains
, selectedDomain
: domains
[0]});
243 updatePlatformSuccess() {
244 this.alt
.actions
.global
.hideScreenLoader
.defer();
245 let platformUsers
= this.platformUsers
;
248 cachedUsers
: platformUsers
,
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})
259 createProjectSuccess() {
260 this.alt
.actions
.global
.hideScreenLoader
.defer();
261 let projects
= this.projects
|| [];
263 'name': this['name'],
264 'description': this['description']
270 activeIndex
: projects
.length
- 1
273 this.setState(newState
);