o
    ޗh                     @   s   d dl Z d dl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  e d	d
ZdZdZdefddZeefde	defddZdS )    N)JWTErrorjwt)datetime	timedelta)DependsHTTPExceptionRequest)Session)models)get_db)load_dotenv
SECRET_KEYZfallback_key_if_missingZHS256   datac                 C   s8   |   }t ttd }|d|i tj|tt	dS )N)minutesexp)	algorithm)
copyr   utcnowr   ACCESS_TOKEN_EXPIRE_MINUTESupdater   encoder   	ALGORITHM)r   Z	to_encodeexpire r   &/var/www/html/vive_backend/app/auth.pycreate_access_token   s   r   requestdbc                 C   s   | j d}|r|dstddd|dd }|tjtjj	|k
 }|r1tdddz4tj|ttgd	}|d
}|d u rJtddd|tjtjj|k
 }|d u rctddd|W S  tyr   tdddw )NAuthorizationzBearer i  z'Authorization header missing or invalid)status_codedetail    zPlease log in again.)
algorithmssubzInvalid JWT payloadi  zUser not foundi  z-Could not validate credentials, Token Expired)headersget
startswithr   splitqueryr
   ZBlacklistedTokenfiltertokenfirstr   decoder   r   Usermobiler   )r   r   Zauth_headerr,   Zblacklistedpayloadr0   userr   r   r   get_current_user   s&   
r3   )osZjoser   r   r   r   fastapir   r   r   sqlalchemy.ormr	   appr
   app.databaser   dotenvr   getenvr   r   r   dictr   r3   r   r   r   r   <module>   s    