o
    ;\h                     @   s   d dl mZ d dlZd dlZd dlmZmZmZ d dlmZm	Z	 d dl
mZmZ dZdZdZd	Zd
ZdddddZG dd dZdS )    )CryptContextN)datetime	timedeltatimezone)UnionAny)JWTErrorjwtiX  i`'  HS256SECRETREFRESHTyour_audienceyour_issuer)
verify_aud
verify_issaudissc                   @   s   e Zd ZdedefddZdededefddZ		dd
eeef de	d	B defddZ
		dd
eeef de	d	B defddZdddZdeded	B fddZd	S )JwtUtilsinput_passwordreturnc                 C   s*   | d}t }tj||d}|dS )Nutf-8)passwordsalt)encodebcryptgensalthashpwdecode)selfr   	pwd_bytesr   hashed_password r!   1/var/www/html/pro-man-master/src/util/JwtUtils.pystr_to_hash   s   

zJwtUtils.str_to_hashplain_passwordhash_passwordc                 C   s"   | d}| d}tj||dS )Nr   )r   r    )r   r   checkpw)r   r$   r%   password_byte_enchashed_byte_encr!   r!   r"   verify_hash   s
   

zJwtUtils.verify_hashNsubjectexpires_deltac                 C   sT   |d urt tj | }nt tjttd }|t|d}t	|t
t}|S N)minutes)expsub)r   nowr   utc	timestampr   ACCESS_TOKEN_EXPIRE_MINUTESstrr	   r   JWT_SECRET_KEY	ALGORITHMr   r*   r+   	to_encodeencoded_jwtr!   r!   r"   create_access_token%   s   zJwtUtils.create_access_tokenc                 C   sP   |d urt tj| }nt tjttd }|t|d}t|t	t
}|S r,   )r   r0   r   r1   r   REFRESH_TOKEN_EXPIRE_MINUTESr4   r	   r   JWT_REFRESH_SECRET_KEYr6   r7   r!   r!   r"   create_refresh_token1   s   zJwtUtils.create_refresh_tokenSuccessTc                 C   s   ||||dS )N)statusmessagedataerrorsr!   )r   rA   r@   r?   rB   r!   r!   r"   formateddResponse=   s
   zJwtUtils.formateddResponsetokenc              
   C   s   t |d ztj|ttgtd}t d| |W S  ty1 } zt d|  W Y d }~d S d }~w tyJ } zt d|  W Y d }~d S d }~ww )Nztoken=============>>>>>>>>.)
algorithmsoptionszToken is valid. Payload:zToken validation failed: zAn unexpected error occurred: )printr	   r   r5   r6   rF   r   	Exception)r   rD   decoded_tokener!   r!   r"   get_decoded_tokenE   s    


zJwtUtils.get_decoded_token)N)Nr>   TN)__name__
__module____qualname__r4   r#   boolr)   r   r   intr:   r=   rC   objectrK   r!   r!   r!   r"   r      s*    




r   )passlib.contextr   r   osr   r   r   typingr   r   joser   r	   r3   r;   r6   r5   r<   rF   r   r!   r!   r!   r"   <module>   s"    