
    i                    T    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d d          Z	dS )	u  
Nom du script : gitlab_user_service.py
Chemin : /gitlab-bridge/app/services/gitlab_user_service.py
Description : Résolution sécurisée du compte GitLab à partir du username et de l'email.
Options éventuelles : Aucune.
Exemples d'utilisation : `GitLabUserService(client).resolve_user(...)`.
Prérequis : Python 3.11+.
Auteur : Sylvain SCATTOLINI
Date de création / modification : 2026-03-25
Version : 1.1
    )annotations)GitLabClient)GitLabUserNotFoundError)AuthContextc                  :    e Zd ZdZddZdd
Zedd            ZdS )GitLabUserServiceu5   Résout un utilisateur GitLab de manière défensive.clientr   returnNonec                    || _         d S )N)r	   )selfr	   s     ?/var/www/html/gitlab-bridge/app/services/gitlab_user_service.py__init__zGitLabUserService.__init__   s        authr   dictc                   | j                             |j                  }|                     ||          }||S | j                             |j                  }|                     ||          }||S t                      )N)email)username)r	   search_usersr   _select_userr   r   )r   r   
candidatesusers       r   resolve_userzGitLabUserService.resolve_user   s    [--DJ-??
  T22K[--t}-EE
  T22K%'''r   r   
list[dict]dict | Nonec                   | D ]}t          |                    dd                                                                                    }t          |                    dd          p|                    dd                                                                                    }||j        k    s||j        k    r|c S d S )Nr    public_emailr   )strgetstriplowerr   r   )r   r   	candidatecandidate_usernamecandidate_emails        r   r   zGitLabUserService._select_user'   s    # 	! 	!I!$Y]]:r%B%B!C!C!I!I!K!K!Q!Q!S!S!)--"C"C"ay}}U\^`GaGabbhhjjpprrO!T]22o6S6S     7Ttr   N)r	   r   r
   r   )r   r   r
   r   )r   r   r   r   r
   r   )__name__
__module____qualname____doc__r   r   staticmethodr    r   r   r   r      sb        ??   ( ( ( (    \  r   r   N)
r*   
__future__r   app.clients.gitlab_clientr   app.core.exceptionsr   app.schemas.commonr   r   r,   r   r   <module>r1      s   
 
 # " " " " " 2 2 2 2 2 2 7 7 7 7 7 7 * * * * * *         r   