15
15
from spaceone .identity .manager .domain_secret_manager import DomainSecretManager
16
16
from spaceone .identity .manager .role_binding_manager import RoleBindingManager
17
17
from spaceone .identity .manager .mfa_manager .base import MFAManager
18
+ from spaceone .identity .manager .role_manager import RoleManager
18
19
from spaceone .identity .manager .token_manager .local_token_manager import (
19
20
LocalTokenManager ,
20
21
)
23
24
from spaceone .identity .model .user_profile .request import *
24
25
from spaceone .identity .model .user .response import *
25
26
from spaceone .identity .model .user .database import User
26
- from spaceone .identity .model .role_binding .response import RoleBindingsResponse
27
- from spaceone . identity . model . workspace . response import WorkspaceResponse , WorkspacesResponse
28
- from spaceone . identity . model . workspace . response import WorkspacesResponse
29
- from spaceone . identity . model . user_profile . response import MyWorkspaceResponse , MyWorkspacesResponse
27
+ from spaceone .identity .model .user_profile .response import (
28
+ MyWorkspaceResponse ,
29
+ MyWorkspacesResponse ,
30
+ )
30
31
31
32
_LOGGER = logging .getLogger (__name__ )
32
33
@@ -109,7 +110,7 @@ def verify_email(self, params: UserProfileVerifyEmailRequest) -> None:
109
110
@transaction (permission = "identity:UserProfile.write" , role_types = ["USER" ])
110
111
@convert_model
111
112
def confirm_email (
112
- self , params : UserProfileConfirmEmailRequest
113
+ self , params : UserProfileConfirmEmailRequest
113
114
) -> Union [UserResponse , dict ]:
114
115
"""Confirm email
115
116
@@ -193,7 +194,7 @@ def reset_password(self, params: UserProfileResetPasswordRequest) -> None:
193
194
@transaction (permission = "identity:UserProfile.write" , role_types = ["USER" ])
194
195
@convert_model
195
196
def enable_mfa (
196
- self , params : UserProfileEnableMFARequest
197
+ self , params : UserProfileEnableMFARequest
197
198
) -> Union [UserResponse , dict ]:
198
199
"""Enable MFA
199
200
@@ -238,7 +239,7 @@ def enable_mfa(
238
239
@transaction (permission = "identity:UserProfile.write" , role_types = ["USER" ])
239
240
@convert_model
240
241
def disable_mfa (
241
- self , params : UserProfileDisableMFARequest
242
+ self , params : UserProfileDisableMFARequest
242
243
) -> Union [UserResponse , dict ]:
243
244
"""Disable MFA
244
245
@@ -268,7 +269,7 @@ def disable_mfa(
268
269
@transaction (permission = "identity:UserProfile.write" , role_types = ["USER" ])
269
270
@convert_model
270
271
def confirm_mfa (
271
- self , params : UserProfileConfirmMFARequest
272
+ self , params : UserProfileConfirmMFARequest
272
273
) -> Union [UserResponse , dict ]:
273
274
"""Confirm MFA
274
275
Args:
@@ -329,7 +330,7 @@ def get(self, params: UserProfileGetRequest) -> Union[UserResponse, dict]:
329
330
@transaction (permission = "identity:UserProfile.read" , role_types = ["USER" ])
330
331
@convert_model
331
332
def get_workspaces (
332
- self , params : UserProfileGetWorkspacesRequest
333
+ self , params : UserProfileGetWorkspacesRequest
333
334
) -> Union [MyWorkspacesResponse , dict ]:
334
335
"""Find user
335
336
Args:
@@ -341,6 +342,7 @@ def get_workspaces(
341
342
MyWorkspaceResponse:
342
343
"""
343
344
345
+ role_mgr = RoleManager ()
344
346
rb_mgr = RoleBindingManager ()
345
347
workspace_mgr = WorkspaceManager ()
346
348
allow_all = False
@@ -366,11 +368,21 @@ def get_workspaces(
366
368
workspace_id = workspace_ids , domain_id = params .domain_id , state = "ENABLED"
367
369
)
368
370
369
- role_bindings_info_map = {
370
- rb .workspace_id : rb .to_dict () for rb in rb_vos
371
- }
371
+ role_vos = role_mgr .filter_roles (
372
+ domain_id = params .domain_id ,
373
+ role_type = ["WORKSPACE_OWNER" , "WORKSPACE_MEMBER" ],
374
+ )
375
+
376
+ for role_vo in role_vos :
377
+ print (role_vo .to_dict ())
378
+ role_name_map = {role_vo .role_id : role_vo .name for role_vo in role_vos }
379
+ print (role_name_map )
380
+ role_bindings_info_map = {rb .workspace_id : rb .to_dict () for rb in rb_vos }
381
+
372
382
workspaces_info = [workspace_vo .to_dict () for workspace_vo in workspace_vos ]
373
- my_workspaces_info = self ._get_my_workspaces_info (workspaces_info , role_bindings_info_map )
383
+ my_workspaces_info = self ._get_my_workspaces_info (
384
+ workspaces_info , role_name_map , role_bindings_info_map
385
+ )
374
386
375
387
return MyWorkspacesResponse (
376
388
results = my_workspaces_info , total_count = len (my_workspaces_info )
@@ -434,21 +446,26 @@ def _generate_temporary_password():
434
446
for _ in range (12 )
435
447
)
436
448
if (
437
- re .search ("[a-z]" , random_password )
438
- and re .search ("[A-Z]" , random_password )
439
- and re .search ("[0-9]" , random_password )
449
+ re .search ("[a-z]" , random_password )
450
+ and re .search ("[A-Z]" , random_password )
451
+ and re .search ("[0-9]" , random_password )
440
452
):
441
453
return random_password
442
454
443
455
@staticmethod
444
- def _get_my_workspaces_info (workspaces_info : list , role_bindings_info_map : dict ) -> list :
456
+ def _get_my_workspaces_info (
457
+ workspaces_info : list , role_name_map : dict , role_bindings_info_map : dict
458
+ ) -> list :
445
459
my_workspaces_info = []
446
460
447
461
for workspace_info in workspaces_info :
448
462
if rb_info := role_bindings_info_map .get (workspace_info ["workspace_id" ]):
449
- workspace_info .update ({
450
- "role_id" : rb_info .get ("role_id" ),
451
- "role_type" : rb_info .get ("role_type" ),
452
- })
463
+ workspace_info .update (
464
+ {
465
+ "role_id" : rb_info .get ("role_id" ),
466
+ "role_type" : rb_info .get ("role_type" ),
467
+ "role_name" : role_name_map .get (rb_info .get ("role_id" )),
468
+ }
469
+ )
453
470
my_workspaces_info .append (workspace_info )
454
471
return my_workspaces_info
0 commit comments