@@ -592,7 +592,7 @@ def __try_personal_access_token(self, auth_string):
592592
593593 return {
594594 'username' : personal_access_token .user_name ,
595- 'groups' : personal_access_token .groups
595+ 'groups' : str ( personal_access_token .groups ). split ( ";" )
596596 }
597597
598598 def __try_auth_dictionary (self , auth_string ):
@@ -616,6 +616,8 @@ def __try_auth_dictionary(self, auth_string):
616616 'groups' in method_config and \
617617 username in method_config ['groups' ] else []
618618
619+ self .__update_personal_access_token_groups (username , group_list )
620+
619621 return {
620622 'username' : username ,
621623 'groups' : group_list
@@ -648,10 +650,39 @@ def __try_auth_ldap(self, auth_string):
648650 if cc_ldap .auth_user (ldap_conf , username , password ):
649651 groups = cc_ldap .get_groups (ldap_conf , username , password )
650652 self .__update_groups (username , groups )
653+ self .__update_personal_access_token_groups (
654+ username ,
655+ groups
656+ )
651657 return {'username' : username , 'groups' : groups }
652658
653659 return False
654660
661+ def __update_personal_access_token_groups (self , user_name , groups ):
662+ """
663+ Update the groups assigned to a personal access token.
664+ """
665+ if not self .__database_connection :
666+ return None
667+
668+ transaction = None
669+ try :
670+ transaction = self .__database_connection ()
671+ transaction .query (PersonalAccessToken ) \
672+ .filter (PersonalAccessToken .user_name == user_name ) \
673+ .update ({PersonalAccessToken .groups : ';' .join (groups )})
674+ transaction .commit ()
675+ return True
676+ except Exception as e :
677+ LOG .error (
678+ f"Couldn't find personal access token for user "
679+ f"{ user_name } : { str (e )} " )
680+ finally :
681+ if transaction :
682+ transaction .close ()
683+
684+ return False
685+
655686 def __update_groups (self , user_name , groups ):
656687 """
657688 Updates group field of the users tokens.
@@ -839,6 +870,8 @@ def create_session_oauth(self, provider: str,
839870
840871 self .__sessions .append (local_session )
841872
873+ self .__update_personal_access_token_groups (username , groups )
874+
842875 # Store the session in the database.
843876 transaction = None
844877 if self .__database_connection :
0 commit comments