
    Xj              	       N   d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ  ee          ZeZd
efdZ ed           ee          fdededz  de	d
efdZdede	d
efdZ ee           ee          fdedede	d
efdZdS )    )DependsHeaderHTTPExceptionRequeststatus)
get_logger)Session)get_translator)decode_access_tokenis_token_revoked)get_db_without_tenant)Tenant)User)ServiceStatusManagerget_status_managerreturnc                      t                      S )N)r        4/lsinfo/ai/hellotax_ai/base_platform/app/api/deps.pyget_service_status_managerr      s    r   Nrequestauthorizationdbc                 ,  K   t          |           }|s.t          t          j        |                    d                    	 |                                \  }}|                                dk    r.t          t          j        |                    d                    nW# t          $ rJ t          	                    d           t          t          j        |                    d                    d w xY wt          |          }|sHt          	                    d           t          t          j        |                    d                    t          |          rHt          	                    d	           t          t          j        |                    d
                    |                    d          }|sHt          	                    d           t          t          j        |                    d                    ddlm} ddlm}	 |                    t$                                         |t$          j                                      |	j                                                t$          j        t1          |          k                                              }
|
sKt          	                    d|            t          t          j        |                    d                    |                    d          }|a|
j        |k    rVt          	                    d| d| d|
j                    t          t          j        |                    d                    |
j        sKt          	                    d|            t          t          j        |                    d                    |
j        sKt          	                    d|            t          t          j        |                    d                    |
S )Nzauth.not_authenticatedstatus_codedetailbearerzauth.invalid_auth_schemez#Invalid authorization header formatzauth.invalid_auth_headerInvalid or expired tokenzauth.invalid_or_expired_tokenToken revokedzauth.token_revokedsubInvalid token payloadzauth.invalid_token_payloadr   
joinedloadUserRolezUser not found: id=zauth.user_not_found	tenant_idzTenant mismatch: user_id=z, jwt_tenant=z, user_tenant=zauth.tenant_mismatchzEmail not verified: user_id=zauth.email_not_verifiedzAccount disabled: user_id=zauth.account_disabled)r
   r   r   HTTP_401_UNAUTHORIZEDtsplitlower
ValueErrorloggerwarningr   r   getsqlalchemy.ormr%   app.models.user_roler'   queryr   options
user_rolesrolefilteridintfirstr(   HTTP_403_FORBIDDENis_verified	is_active)r   r   r   r*   schemetokenpayloaduser_idr%   r'   userjwt_tenant_ids               r   get_current_userrD      s     
 	wA 
4QSSAY=Z=Z
 
 
 	

%++--<<>>X%%"8E_A`A`    &    <===4QSSA[=\=\
 
 
	
 "%((G 
12224QSSA`=a=a
 
 
 	
  
'''4QSSAU=V=V
 
 
 	
 kk%  G 
.///4QSSA]=^=^
 
 
 	
 *)))))------ 		DO,,77FF	G	G	3w<<'	(	(		 	  
6W667774QSSAV=W=W
 
 
 	
 KK,,M >]**NNzwzz]zzjnjxzz{{{"5accBX>Y>Y     
?g??@@@1!##>W:X:X
 
 
 	
 > 
=G==>>>1!##>U:V:V
 
 
 	
 Ks   AB! !AC5r?   c                    t          |           }|st          t          j        d          t	          |           rt          t          j        d          |                    d          }|st          t          j        d          ddlm} ddlm	} |
                    t                                         |t          j                                      |j                                                t          j        t#          |          k                                              }|st          t          j        d	          |j        r|j        st          t          j        d
          |S )Nr    r   r!   r"   r#   r   r$   r&   zUser not foundzAccount not active)r   r   r   r)   r   r0   r1   r%   r2   r'   r3   r   r4   r5   r6   r7   r8   r9   r:   r<   r=   r;   )r?   r   r@   rA   r%   r'   rB   s          r   get_current_user_from_tokenrF   ]   ss   !%((G 
4=W
 
 
 	
  ^(D_]]]]kk%  G 
4=T
 
 
 	
 *)))))------ 		DO,,77FF	G	G	3w<<'	(	(		 	  _(DM]^^^^ `4> `(AJ^____Kr   current_userc                   K   t          |           }|j        s.t          t          j        |                    d                    |                    t                                        t          j	        |j        k              
                                }|s.t          t          j        |                    d                    |S )Nzauth.no_tenantr   zauth.tenant_not_found)r
   r(   r   r   HTTP_400_BAD_REQUESTr*   r3   r   r7   r8   r:   HTTP_404_NOT_FOUND)r   rG   r   r*   tenants        r   get_current_tenantrL   {   s      
 	wA! c(CACCP`LaLabbbbXXf$$VY,2H%HIIOOQQF 
1!##>U:V:V
 
 
 	
 Mr   ) fastapir   r   r   r   r   common_loggingr   r1   r	   app.core.i18nr
   app.core.securityr   r   app.db.sessionr   app.models.tenantr   app.models.userr   'app.services.llm.service_status_managerr   r   __name__r.   get_dbr   strrD   rF   rL   r   r   r   <module>rX      s   C C C C C C C C C C C C C C % % % % % % " " " " " " ( ( ( ( ( ( C C C C C C C C 0 0 0 0 0 0 $ $ $ $ $ $             \ \ \ \ \ \ \ \	H			 $8         !'t'/00F FF:F 	F 
	F F F FRs  D    @ !!122'/00  	 	     r   