@@ -220,7 +220,7 @@ def refresh_token(self, refresh_token: str) -> dict:
220220 response = self .do_get (uri , None , None , refresh_token )
221221
222222 resp = response .json ()
223- return self ._generate_auth_info (resp , refresh_token )
223+ return self .generate_jwt_response (resp , refresh_token )
224224
225225 def exchange_access_key (self , access_key : str ) -> dict :
226226 uri = Auth ._compose_exchange_access_key_url ()
@@ -321,19 +321,8 @@ def _fetch_public_keys(self) -> None:
321321 # just continue to the next key
322322 pass
323323
324- def _generate_auth_info (self , response_body : dict , refresh_token : str ) -> dict :
325- jwt_response = {}
326- st_jwt = response_body .get ("sessionJwt" , "" )
327- if st_jwt :
328- jwt_response [SESSION_TOKEN_NAME ] = self ._validate_token (st_jwt )
329- rt_jwt = response_body .get ("refreshJwt" , "" )
330- if refresh_token :
331- jwt_response [REFRESH_SESSION_TOKEN_NAME ] = self ._validate_token (
332- refresh_token
333- )
334- elif rt_jwt :
335- jwt_response [REFRESH_SESSION_TOKEN_NAME ] = self ._validate_token (rt_jwt )
336-
324+ def adjust_properties (self , jwt_response : dict ):
325+ # Save permissions, roles and tenants info from Session token or from refresh token on the json top level
337326 if jwt_response .get (SESSION_TOKEN_NAME , None ):
338327 jwt_response ["permissions" ] = jwt_response .get (SESSION_TOKEN_NAME ).get (
339328 "permissions" , []
@@ -355,6 +344,33 @@ def _generate_auth_info(self, response_body: dict, refresh_token: str) -> dict:
355344 "tenants" , {}
356345 )
357346
347+ # Save the projectID also in the dict top level
348+ jwt_response ["projectId" ] = jwt_response .get (SESSION_TOKEN_NAME , {}).get (
349+ "iss" , None
350+ ) or jwt_response .get (REFRESH_SESSION_TOKEN_NAME , {}).get ("iss" , None )
351+
352+ # Save the userID also in the dict top level
353+ jwt_response ["userId" ] = jwt_response .get (SESSION_TOKEN_NAME , {}).get (
354+ "sub" , None
355+ ) or jwt_response .get (REFRESH_SESSION_TOKEN_NAME , {}).get ("sub" , None )
356+
357+ return jwt_response
358+
359+ def _generate_auth_info (self , response_body : dict , refresh_token : str ) -> dict :
360+ jwt_response = {}
361+ st_jwt = response_body .get ("sessionJwt" , "" )
362+ if st_jwt :
363+ jwt_response [SESSION_TOKEN_NAME ] = self ._validate_token (st_jwt )
364+ rt_jwt = response_body .get ("refreshJwt" , "" )
365+ if refresh_token :
366+ jwt_response [REFRESH_SESSION_TOKEN_NAME ] = self ._validate_token (
367+ refresh_token
368+ )
369+ elif rt_jwt :
370+ jwt_response [REFRESH_SESSION_TOKEN_NAME ] = self ._validate_token (rt_jwt )
371+
372+ jwt_response = self .adjust_properties (jwt_response )
373+
358374 jwt_response [COOKIE_DATA_NAME ] = {
359375 "exp" : response_body .get ("cookieExpiration" , 0 ),
360376 "maxAge" : response_body .get ("cookieMaxAge" , 0 ),
@@ -367,15 +383,6 @@ def _generate_auth_info(self, response_body: dict, refresh_token: str) -> dict:
367383 def generate_jwt_response (self , response_body : dict , refresh_cookie : str ) -> dict :
368384 jwt_response = self ._generate_auth_info (response_body , refresh_cookie )
369385
370- projectId = jwt_response .get (SESSION_TOKEN_NAME , {}).get (
371- "iss" , None
372- ) or jwt_response .get (REFRESH_SESSION_TOKEN_NAME , {}).get ("iss" , None )
373- user_id = jwt_response .get (SESSION_TOKEN_NAME , {}).get (
374- "sub" , None
375- ) or jwt_response .get (REFRESH_SESSION_TOKEN_NAME , {}).get ("sub" , None )
376-
377- jwt_response ["projectId" ] = projectId
378- jwt_response ["userId" ] = user_id
379386 jwt_response ["user" ] = response_body .get ("user" , {})
380387 jwt_response ["firstSeen" ] = response_body .get ("firstSeen" , True )
381388 return jwt_response
0 commit comments