o
    vi                     @   s   d dl mZ d dlmZmZ d dlmZ d dlmZmZ dZ	dZ
dZedgd	d
Zdd Zdd Zddedee fdd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ZeddZeeeefdedefddZdS )    )CryptContext)datetime	timedelta)Optional)JWTErrorjwtz,super-secret-key-please-change-in-productionHS256i  pbkdf2_sha256auto)schemes
deprecatedc                 C   s   t | |S N)pwd_contextverify)plain_passwordhashed_password r   !/home/air/biblejyuku/back/auth.pyverify_password   s   r   c                 C   s
   t | S r   )r   hash)passwordr   r   r   get_password_hash   s   
r   Ndataexpires_deltac                 C   sN   |   }|rt | }n	t tdd }|d|i tj|ttd}|S )N   )minutesexp)	algorithm)	copyr   utcnowr   updater   encode
SECRET_KEY	ALGORITHM)r   r   	to_encodeexpireencoded_jwtr   r   r   create_access_token   s   r'   )DependsHTTPExceptionstatus)OAuth2PasswordBearer)Session)get_dbz/biblejyuku/api/token)tokenUrltokendbc                 C   s   t tjdddid}ztj| ttgd}|d}|d u r|W n
 tjy*   |w |	t
jt
jj|k }|d u r@||S )NzCould not validate credentialszWWW-AuthenticateBearer)status_codedetailheaders)
algorithmssub)r)   r*   HTTP_401_UNAUTHORIZEDr   decoder"   r#   getr   querymodelsUserfilterusernamefirst)r/   r0   credentials_exceptionpayloadr>   userr   r   r   get_current_user&   s$   
rC   r   )passlib.contextr   r   r   typingr   joser   r   r"   r#   ACCESS_TOKEN_EXPIRE_MINUTESr   r   r   dictr'   fastapir(   r)   r*   fastapi.securityr+   sqlalchemy.ormr,   databaser-   r;   oauth2_schemestrrC   r   r   r   r   <module>   s$    

$