
    S^hN                     B   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mZ d d
l d dlmZ  e         e j,                  d      ZdZdZ ed      ZddedefdZdefdZ eej>                         ee      fdedefdZ defdZ!y)    N)datetime	timedelta)JWTErrorjwt)DependsHTTPExceptionstatus)OAuth2PasswordBearer)JSONResponse)Session   )modelsdatabase)*)load_dotenv
SECRET_KEYHS256i  token)tokenUrldataexpires_deltac                    | j                         }|rt        j                         |z   }n!t        j                         t        d      z   }|j	                  d|i       t        j                  |t        t              }|S )N   )minutesexp)	algorithm)	copyr   utcnowr   updater   encoder   	ALGORITHM)r   r   	to_encodeexpireencoded_jwts        ./var/www/html/content_weaver/db_config/auth.pycreate_access_tokenr&      sa    		I"]2"Yr%::eV_%**Y
iHK    c                     	 t        j                  | t        t        g      }|j	                  d      }|||S # t
        $ r}t        ddt        |             d }~ww xY w)N
algorithmssub  zInvalid token: status_codedetail)r   decoder   r!   getr   r   str)r   credentials_exceptionpayloademailes        r%   verify_tokenr7      sd    P**UJI;G[['='' Poc!fX4NOOPs   7: 	A!AA!dbc                     | j                  t        j                        j                  t        j                  j                  |k(        j                         }|st        dd      |S )Nr,   zInvalid tokenr-   )queryr   Userfilterr   firstr   )r8   r   users      r%   get_current_userr?   )   sL    88FKK ''(9(9U(BCIIKDODDKr'   c                 j    t        j                  | t        t        g      }|j	                  d      }|S )Nr)   user_id)r   r0   r   r!   r1   )r   r4   rA   s      r%   get_user_id_from_tokenrB   0   s)    jj
	{CGkk)$GNr'   )N)"osr   r   joser   r   fastapir   r   r	   fastapi.securityr
   fastapi.responsesr   sqlalchemy.ormr    r   r   dependencies.helperdotenvr   getenvr   r!   ACCESS_TOKEN_EXPIRE_MINUTESoauth2_schemedictr&   r2   r7   get_dbr?   rB    r'   r%   <module>rR      s    	 (  2 2 1 * "  !   RYY|$
	" $g6d 9 	P 	P $+8??#;Q^I_  3 # r'   