
    /is                         d dl mZ d dlmZmZmZ d dlmZmZ d dl	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  ed	
      Z ee       ee      fdedz  dedefdZy)    )UUID)DependsHTTPExceptionstatus)HTTPAuthorizationCredentials
HTTPBearer)funcor_select)AsyncSession)decode_token)get_db)UserF)
auto_errorcredentialsNdbreturnc                 &  K   | | j                   st        t        j                  d      | j                   }	 t	        |      }|j                  d      dk7  rt        t        j                  d      |j                  d      }t        |t              st        t        j                  d      |j                  d      }|st        t        j                  d      	 t        t        |            }|j                  t        t              j                  t        j                  |k(  t!        t        j"                  j%                  d       t'        j(                  |      t        j"                  k\                     d {   }|j+                         }|r|j,                  st        t        j                  d      |S # t
        $ r t        t        j                  d      w xY w# t
        $ r t        t        j                  d      w xY w7 w)	NzNot authenticated)status_codedetailzInvalid tokentypeaccessiatsubzInactive user)r   r   r   HTTP_401_UNAUTHORIZEDr   
ValueErrorget
isinstanceintr   strexecuter   r   whereidr
   tokens_invalid_beforeis_r	   to_timestampscalar_one_or_none	is_active)	r   r   tokenpayloadr   r   user_idresultusers	            2/var/www/html/marco-python-backend/app/api/deps.pyget_current_userr/      s     +"9"9(D(DM`aa##E^u% {{6h&(D(D_]]
++e
Cc3(D(D_]]
++e
C(D(D_]]^s3x. ::tGGw**..t4d6G6G6LPTPjPj6jk	
 F $$&Dt~~(D(D_]]K;  ^(D(D_]]^   ^(D(D_]]^sB   6HF? BHG' 2BH?H ?H?%G$$H'%HH)uuidr   fastapir   r   r   fastapi.securityr   r   
sqlalchemyr	   r
   r   sqlalchemy.ext.asyncior   app.core.securityr   app.db.sessionr   app.models.userr   bearer_schemer/        r.   <module>r;      sb     2 2 E ( ( / * !  e, 8?}7Mv(-4(( 
(r:   