o
    Xh                     @   s   d dl mZmZmZ d dlmZmZ d dlmZm	Z	 d dl
m
Z
mZ d dlZd dlmZ e  edZedZed	Zed
ZeddZddedefddZddedefddZdefddZeefdefddZdS )    )DependsHTTPExceptionstatus)
HTTPBearerHTTPAuthorizationCredentials)jwtJWTError)datetime	timedeltaN)load_dotenv
SECRET_KEY	ALGORITHMACCESS_TOKEN_EXPIRE_MINUTESREFRESH_TOKEN_EXPIRE_DAYST)
auto_errordataexpires_deltac                    B   |   }t |pttd }|d|i tj|tt	d}|S )N)minutesexp	algorithm)
copyr	   utcnowr
   r   updater   encoder   r   r   r   	to_encodeexpireencoded_jwt r    @/var/www/html/construction_image-detection-poc/src/utils/auth.pycreate_access_token      r"   c                    r   )N)daysr   r   )
r   r	   r   r
   r   r   r   r   r   r   r   r    r    r!   create_refresh_token   r#   r%   tokenc                    s0   zt j| ttgd}|W S  ty   Y d S w )N)
algorithms)r   decoder   r   r   )r&   payloadr    r    r!   verify_access_token   s   r*   credentialsc              
      s   z&| j }t|I d H }|d u rttjdddid|dd |dddW S  tyB } zttjd	t| ddidd }~ww )
NzInvalid or expired tokenzWWW-AuthenticateBearer)status_codedetailheadersuser_idsubzdefault@example.com)r0   emailzToken validation failed: )r+   r*   r   r   HTTP_401_UNAUTHORIZEDget	Exceptionstr)r+   r&   r)   er    r    r!   get_current_user&   s*   

r8   )N)fastapir   r   r   fastapi.securityr   r   joser   r   r	   r
   osdotenvr   getenvr   r   r   r   bearer_schemedictr"   r%   r6   r*   r8   r    r    r    r!   <module>   s     




