o
    ߭h                     @   s   d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZ d dlmZ d dlmZmZ 	dd	ee	je	jf d
ee	je	jf dee	je	jf dedef
ddZdS )    )	APIRouterDependsHTTPExceptionRequeststatus)OAuth2PasswordRequestForm)models)AuthenticationBackendAuthenticatorStrategy)BaseUserManagerUserManagerDependency)OpenAPIResponseType)	ErrorCode
ErrorModelFbackendget_user_managerauthenticatorrequires_verificationreturnc           
         s6  t  }|jdd}tjtddtjddtjidtjddtjidiiid	i j	 }|j
d
d j d|dt t|t jfdtdtdttjtjf dttjtjf f fdd}i tjddii j }|j
dd j d|dt|t jfdttjtf dttjtjf f fdd}	|S )zIGenerate a router with login/logout routes for an authentication backend.T)activeverifiedzapplication/jsonexamplesz(Bad credentials or the user is inactive.detail)summaryvaluezThe user is not verified.)modelcontentz/loginzauth:z.login)name	responsesrequestcredentialsuser_managerstrategyc                    st   | |I d H }|d u s|jsttjtjdr%|js%ttjtjd 	||I d H }|
|| |I d H  |S )N)status_coder   )authenticate	is_activer   r   HTTP_400_BAD_REQUESTr   LOGIN_BAD_CREDENTIALSis_verifiedLOGIN_USER_NOT_VERIFIEDloginon_after_login)r    r!   r"   r#   userresponser   r    ^/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/fastapi_users/router/auth.pyr+   ,   s   
zget_auth_router.<locals>.logindescriptionzMissing token or inactive user.z/logoutz.logout
user_tokenc                    s   | \}}  |||I d H S )N)logout)r3   r#   r-   token)r   r0   r1   r4   P   s   zget_auth_router.<locals>.logout)r   current_user_tokenr   r'   r   r   r(   r*   	transport#get_openapi_login_responses_successpostr   r   get_strategyr   r   r   r   UPIDr   HTTP_401_UNAUTHORIZED$get_openapi_logout_responses_successtuplestr)
r   r   r   r   routerget_current_user_tokenlogin_responsesr+   logout_responsesr4   r0   r/   r1   get_auth_router   sv   	rE   N)F)fastapir   r   r   r   r   fastapi.securityr   fastapi_usersr   fastapi_users.authenticationr	   r
   r   fastapi_users.managerr   r   fastapi_users.openapir   fastapi_users.router.commonr   r   r;   r<   boolrE   r0   r0   r0   r1   <module>   s&    