From 85da8bd976480346046f1a1e94240d1d694df382 Mon Sep 17 00:00:00 2001 From: yangsngshaoxue Date: Thu, 25 Aug 2022 21:19:52 +0800 Subject: [PATCH] fix: Add enable field in profile Add enable field in profile Change-Id: I1b7b314d49dcd08e8b01be090a7d5206c2f83d4f --- skyline_apiserver/api/v1/login.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/skyline_apiserver/api/v1/login.py b/skyline_apiserver/api/v1/login.py index 0f5d6b6..673673a 100644 --- a/skyline_apiserver/api/v1/login.py +++ b/skyline_apiserver/api/v1/login.py @@ -52,6 +52,7 @@ async def _get_projects_and_unscope_token( username: Optional[str] = None, password: Optional[str] = None, token: Optional[str] = None, + project_enabled: bool = False, ) -> Tuple[List[Any], str]: try: auth_url = await utils.get_endpoint( @@ -90,8 +91,9 @@ async def _get_projects_and_unscope_token( detail=str(e), ) - # we must get the project_scope with enabled project - project_scope = [scope for scope in project_scope if scope.enabled] + if project_enabled: + project_scope = [scope for scope in project_scope if scope.enabled] + if not project_scope: raise Exception("You are not authorized for any projects or domains.") @@ -113,7 +115,15 @@ async def _patch_profile(profile: schemas.Profile, global_request_id: str) -> sc region=profile.region, token=profile.keystone_token ) - profile.projects = {i.id: {"name": i.name, "domain_id": i.domain_id} for i in projects} + profile.projects = { + i.id: { + "name": i.name, + "enabled": i.enabled, + "domain_id": i.domain_id, + "description": i.description, + } + for i in projects + } except Exception as e: raise HTTPException( @@ -150,6 +160,7 @@ async def login( domain=credential.domain, username=credential.username, password=credential.password, + project_enabled=True, ) project_scope_token = await get_project_scope_token( @@ -242,7 +253,9 @@ async def websso( ) -> RedirectResponse: try: project_scope, _ = await _get_projects_and_unscope_token( - region=CONF.openstack.sso_region, token=token + region=CONF.openstack.sso_region, + token=token, + project_enabled=True, ) project_scope_token = await get_project_scope_token(