
    i                    L    d Z ddlmZ ddlmZ ddlmZmZ  G d d          ZdS )u  
Nom du script : gitlab_permission_service.py
Chemin : /gitlab-bridge/app/services/gitlab_permission_service.py
Description : Vérification des droits réels d'un utilisateur sur un projet GitLab.
Options éventuelles : Aucune.
Exemples d'utilisation : `assert_can_read_project(...)`, `assert_can_create_issue(...)`.
Prérequis : Python 3.11+.
Auteur : Sylvain SCATTOLINI
Date de création / modification : 2026-03-25
Version : 1.1
    )annotations)GitLabClient)AccessDeniedErrorGitLabApiErrorc                  F    e Zd ZdZdZdZdZdZdZddZ	ddZ
ddZddZdS )GitLabPermissionServiceu8   Contrôle les permissions GitLab minimales nécessaires.
         (   2   clientr   returnNonec                    || _         d S )N)r   )selfr   s     E/var/www/html/gitlab-bridge/app/services/gitlab_permission_service.py__init__z GitLabPermissionService.__init__   s        
project_idintuser_iddictc                    |                      ||          }t          |                    dd                    | j        k     rt	          d          |S )Nr   r   access_levelr   u3   L'utilisateur n'a pas d'accès valide à ce projet.)_get_memberr   getACCESS_LEVEL_GUESTr   r   r   r   members       r   assert_can_read_projectz/GitLabPermissionService.assert_can_read_project   sR    !!Z!IIvzz.!,,--0GGG#$YZZZr   c                    |                      ||          }t          |                    dd                    | j        k     rt	          d          |S )Nr   r   r   u7   L'utilisateur ne peut pas créer d'issue sur ce projet.)r   r   r   ACCESS_LEVEL_REPORTERr   r    s       r   assert_can_create_issuez/GitLabPermissionService.assert_can_create_issue%   sR    !!Z!IIvzz.!,,--0JJJ#$]^^^r   c                    	 | j                             ||          S # t          $ r&}dt          |          v rt	                      | d }~ww xY w)Nr   zHTTP 404)r   get_project_memberr   strr   )r   r   r   excs       r   r   z#GitLabPermissionService._get_member+   sd    	;11ZQX1YYY 	 	 	SXX%%'))s2	s    
A!A		AN)r   r   r   r   )r   r   r   r   r   r   )__name__
__module____qualname____doc__r   r$   ACCESS_LEVEL_DEVELOPERACCESS_LEVEL_MAINTAINERACCESS_LEVEL_OWNERr   r"   r%   r    r   r   r   r      s        BB               r   r   N)	r-   
__future__r   app.clients.gitlab_clientr   app.core.exceptionsr   r   r   r1   r   r   <module>r5      s   
 
 # " " " " " 2 2 2 2 2 2 A A A A A A A A         r   