o
    ߭hu                     @   s   U d dl mZmZmZmZmZmZ d dl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mZ ejeddejd	d
ejidejdd
ejddidiiidiZeed< deejejf defddZdS )    )	APIRouterBodyDependsHTTPExceptionRequeststatus)EmailStr)
exceptionsmodels)BaseUserManagerUserManagerDependency)OpenAPIResponseType)	ErrorCode
ErrorModelzapplication/jsonexampleszBad or expired token.detail)summaryvaluezPassword validation failed.z(Password should be at least 3 characterscodereason)modelcontentRESET_PASSWORD_RESPONSESget_user_managerreturnc                 C   s   t  }|jdtjddtdddt| fdtdtd	tt	j
t	jf fd
d}|jddtdtdtdt| fdtdtdtd	tt	j
t	jf fdd}|S )z1Generate a router with the reset password routes.z/forgot-passwordzreset:forgot_password)status_codename.T)embedrequestemailuser_managerc                    s^   z
| |I d H }W n tjy   Y d S w z||| I d H  W d S  tjy.   Y d S w )N)get_by_emailr	   UserNotExistsforgot_passwordUserInactive)r   r    r!   user r'   _/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/fastapi_users/router/reset.pyr$   )   s   
z2get_reset_password_router.<locals>.forgot_passwordz/reset-passwordzreset:reset_password)r   	responsestokenpasswordc              
      sx   z| ||| I d H  W d S  tjtjtjfy#   ttjtj	d tj
y; } zttjtj|jddd }~ww )N)r   r   r   )reset_passwordr	   InvalidResetPasswordTokenr#   r%   r   r   HTTP_400_BAD_REQUESTr   RESET_PASSWORD_BAD_TOKENInvalidPasswordExceptionRESET_PASSWORD_INVALID_PASSWORDr   )r   r*   r+   r!   er'   r'   r(   r,   ?   s*   
z1get_reset_password_router.<locals>.reset_password)r   postr   HTTP_202_ACCEPTEDr   r   r   r   r   r
   UPIDr   str)r   routerr$   r,   r'   r'   r(   get_reset_password_router#   sB   
r9   N)fastapir   r   r   r   r   r   pydanticr   fastapi_usersr	   r
   fastapi_users.managerr   r   fastapi_users.openapir   fastapi_users.router.commonr   r   r.   r/   r1   r   __annotations__r5   r6   r9   r'   r'   r'   r(   <module>   s@   " 