Skip to content

Commit 3e73a11

Browse files
authored
Merge pull request #232 from ImMin5/feature-service-accont-auto-sync
Add role_name at MyWorkspaceInfo
2 parents c2a3771 + 33c63e6 commit 3e73a11

File tree

2 files changed

+39
-21
lines changed

2 files changed

+39
-21
lines changed

src/spaceone/identity/model/user_profile/response.py

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class MyWorkspaceResponse(BaseModel):
1313
workspace_id: Union[str, None] = None
1414
name: Union[str, None] = None
1515
state: Union[State, None] = None
16+
role_name: Union[str, None] = None
1617
role_type: Union[str, None] = None
1718
tags: Union[dict, None] = None
1819
created_by: Union[str, None] = None

src/spaceone/identity/service/user_profile_service.py

+38-21
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from spaceone.identity.manager.domain_secret_manager import DomainSecretManager
1616
from spaceone.identity.manager.role_binding_manager import RoleBindingManager
1717
from spaceone.identity.manager.mfa_manager.base import MFAManager
18+
from spaceone.identity.manager.role_manager import RoleManager
1819
from spaceone.identity.manager.token_manager.local_token_manager import (
1920
LocalTokenManager,
2021
)
@@ -23,10 +24,10 @@
2324
from spaceone.identity.model.user_profile.request import *
2425
from spaceone.identity.model.user.response import *
2526
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+
)
3031

3132
_LOGGER = logging.getLogger(__name__)
3233

@@ -109,7 +110,7 @@ def verify_email(self, params: UserProfileVerifyEmailRequest) -> None:
109110
@transaction(permission="identity:UserProfile.write", role_types=["USER"])
110111
@convert_model
111112
def confirm_email(
112-
self, params: UserProfileConfirmEmailRequest
113+
self, params: UserProfileConfirmEmailRequest
113114
) -> Union[UserResponse, dict]:
114115
"""Confirm email
115116
@@ -193,7 +194,7 @@ def reset_password(self, params: UserProfileResetPasswordRequest) -> None:
193194
@transaction(permission="identity:UserProfile.write", role_types=["USER"])
194195
@convert_model
195196
def enable_mfa(
196-
self, params: UserProfileEnableMFARequest
197+
self, params: UserProfileEnableMFARequest
197198
) -> Union[UserResponse, dict]:
198199
"""Enable MFA
199200
@@ -238,7 +239,7 @@ def enable_mfa(
238239
@transaction(permission="identity:UserProfile.write", role_types=["USER"])
239240
@convert_model
240241
def disable_mfa(
241-
self, params: UserProfileDisableMFARequest
242+
self, params: UserProfileDisableMFARequest
242243
) -> Union[UserResponse, dict]:
243244
"""Disable MFA
244245
@@ -268,7 +269,7 @@ def disable_mfa(
268269
@transaction(permission="identity:UserProfile.write", role_types=["USER"])
269270
@convert_model
270271
def confirm_mfa(
271-
self, params: UserProfileConfirmMFARequest
272+
self, params: UserProfileConfirmMFARequest
272273
) -> Union[UserResponse, dict]:
273274
"""Confirm MFA
274275
Args:
@@ -329,7 +330,7 @@ def get(self, params: UserProfileGetRequest) -> Union[UserResponse, dict]:
329330
@transaction(permission="identity:UserProfile.read", role_types=["USER"])
330331
@convert_model
331332
def get_workspaces(
332-
self, params: UserProfileGetWorkspacesRequest
333+
self, params: UserProfileGetWorkspacesRequest
333334
) -> Union[MyWorkspacesResponse, dict]:
334335
"""Find user
335336
Args:
@@ -341,6 +342,7 @@ def get_workspaces(
341342
MyWorkspaceResponse:
342343
"""
343344

345+
role_mgr = RoleManager()
344346
rb_mgr = RoleBindingManager()
345347
workspace_mgr = WorkspaceManager()
346348
allow_all = False
@@ -366,11 +368,21 @@ def get_workspaces(
366368
workspace_id=workspace_ids, domain_id=params.domain_id, state="ENABLED"
367369
)
368370

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+
372382
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+
)
374386

375387
return MyWorkspacesResponse(
376388
results=my_workspaces_info, total_count=len(my_workspaces_info)
@@ -434,21 +446,26 @@ def _generate_temporary_password():
434446
for _ in range(12)
435447
)
436448
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)
440452
):
441453
return random_password
442454

443455
@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:
445459
my_workspaces_info = []
446460

447461
for workspace_info in workspaces_info:
448462
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+
)
453470
my_workspaces_info.append(workspace_info)
454471
return my_workspaces_info

0 commit comments

Comments
 (0)