
    /i                        d dl m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 dlmZ d dlmZ  edgd	
      Zed   ZddZddZddZddZddZddZy)    )annotationsN)datetime	timedeltatimezone)AnyLiteral)JWTErrorjwt)CryptContext)settingsbcryptauto)schemes
deprecated)accessrefreshc                    t        j                  | j                  d            j                         }t        j                  |      S Nzutf-8)hashlibsha256encode	hexdigestpwd_contexthash)passworddigests     7/var/www/html/marco-python-backend/app/core/security.pyhash_passwordr      s3    ^^HOOG45??AFF##    c                    t        j                  | j                  d            j                         }t        j                  ||      S r   )r   r   r   r   r   verify)r   password_hashr   s      r   verify_passwordr#      s5    ^^HOOG45??AFfm44r   c                 H    t        j                  t        j                        S )N)r   nowr   utc r   r   utcnowr(      s    <<%%r   c                    t               }| ||t        |j                               t        ||z   j                               d}t        j                  |t
        j                  t
        j                        S )N)subemailtypeiatexp)	algorithm)r(   int	timestampr
   r   r   JWT_SECRET_KEYJWT_ALGORITHM)r*   r+   
token_typeexpires_deltar%   payloads         r   create_tokenr7      s^    
(C3==?#C-'2245G ::gx66(BXBXYYr   c                    	 t        j                  | t        j                  t        j                  g      S # t
        $ r}t        d      |d }~ww xY w)N)
algorithmszInvalid token)r
   decoder   r2   r3   r	   
ValueError)tokenes     r   decode_tokenr>   *   sF    1zz%!8!8hF\F\E]^^ 1)q01s   47 	A AAc                f    t        j                  | j                  d            j                         S r   )r   r   r   r   )r<   s    r   hash_refresh_tokenr@   1   s#    >>%,,w/0::<<r   )r   strreturnrA   )r   rA   r"   rA   rB   bool)rB   r   )
r*   rA   r+   rA   r4   	TokenTyper5   r   rB   rA   )r<   rA   rB   zdict[str, Any])r<   rA   rB   rA   )
__future__r   r   r   r   r   typingr   r   joser	   r
   passlib.contextr   app.core.configr   r   rD   r   r#   r(   r7   r>   r@   r'   r   r   <module>rJ      sU    "  2 2   ( $H:&A'(	$
5&	Z1=r   