
    Xj                         d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
  e
e          Z G d d          Z ed           ee          fdedz  d	ed
efdZdefdZdS )    )DependsHeaderHTTPExceptionstatus)Session)get_db)
get_loggerc                   $    e Zd ZddededefdZdS )	Userexpert   idrole	tenant_idc                 0    || _         || _        || _        d S )Nr   r   r   )selfr   r   r   s       >/lsinfo/ai/hellotax_ai/training_center/backend/app/api/deps.py__init__zUser.__init__   s    	"    N)r   r   )__name__
__module____qualname__intstrr    r   r   r   r      sB        # #3 #c #s # # # # # #r   r   Nauthorizationdbreturnc                 L  K   ddl m} | st          ddd          S 	 |                                 \  }}|                                dk    rt          ddd          S n"# t
          $ r t          ddd          cY S w xY wddlm}m} 	 |	                    ||j
        dg	          }|                    d
          }|st          ddd          S t          t          |                    S # |$ r/ t                              d           t          ddd          cY S w xY w)Nr   )settingsr   adminr   bearer)JWTErrorjwtHS256)
algorithmssub)r   zJWT decode failed)app.core.configr!   r   splitlower
ValueErrorjoser$   r%   decode
SECRET_KEYgetr   loggerwarning)	r   r   r!   schemetokenr$   r%   payloaduser_ids	            r   get_current_userr7      sy     (((((( 5qw!44445%++--<<>>X%%17a8888 & 5 5 5qw!4444445""""""""5**UH$7WI*NN++e$$ 	917a8888s7||$$$$ 5 5 5*+++qw!4444445s+   A A   A?>A?AC/ C/ /1D#"D#allowed_rolesc                  X     t          t                    fdt          dt          f fd}|S )Ncurrent_userr   c                 T   K   | j         vrt          t          j        d          | S )NzInsufficient permissions)status_codedetail)r   r   r   HTTP_403_FORBIDDEN)r:   r8   s    r   role_checkerz"require_role.<locals>.role_checker*   s2      M11F,ENhiiiir   )r   r7   r   )r8   r?   s   ` r   require_roler@   (   sH    .56F.G.G   D       r   )fastapir   r   r   r   sqlalchemy.ormr   app.core.databaser   common_loggingr	   r   r1   r   r   r7   r@   r   r   r   <module>rE      s   : : : : : : : : : : : : " " " " " " $ $ $ $ $ $ % % % % % %	H		# # # # # # # # 6<VD\\wwW] 5 5#* 5w 5cg 5 5 5 5*      r   