
    JUh                        d dl mZ d dlmZ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 d dlmZ d dlmZmZmZ d d	lmZmZmZmZ  ed
dg          Ze                    de           ee          fdede
fd            Ze                    de           e             ee          fdede
fd            Ze                    de           ee          fdefd            ZdS )    )	timedelta)	APIRouterDependsHTTPExceptionstatus)OAuth2PasswordRequestForm)Session)get_db)ACCESS_TOKEN_EXPIRE_MINUTES)User)Token
UserCreateUserResponse)authenticate_usercreate_access_tokenget_password_hashget_current_active_userz/authAuthentication)prefixtagsz	/register)response_modeluserdbc                   K   |                     t                                        t          j        | j        k                                              }|rt          dd          t          | j                  }t          | j        || j        | j	                  }|
                    |           |                                 |                    |           |S )zRegister a new useri  zEmail already registered)status_codedetail)emailhashed_password	full_namerole)queryr   filterr   firstr   r   passwordr   r    addcommitrefresh)r   r   db_userr   s       */home/runner/workspace/app/routers/auth.pyregisterr*      s       hhtnn##DJ$*$<==CCEEG 
-
 
 
 	
 (66Oj'.Y	  G FF7OOOIIKKKJJwN    z/login	form_datac                    K   t          || j        | j                  }|st          t          j        dddi          t          t                    }t          d|j	        i|          }|dd	S )
z)Authenticate user and return access tokenzIncorrect email or passwordzWWW-AuthenticateBearer)r   r   headers)minutessub)dataexpires_deltabearer)access_token
token_type)
r   usernamer$   r   r   HTTP_401_UNAUTHORIZEDr   r   r   r   )r,   r   r   access_token_expiresr5   s        r)   loginr:   +   s       R!3Y5GHHD 
40'2
 
 
 	
 %-HIII&TZ 0D  L )AAAr+   z/mecurrent_userc                 
   K   | S )zGet current user info )r;   s    r)   read_users_mer>   <   s       r+   N) datetimer   fastapir   r   r   r   fastapi.securityr   sqlalchemy.ormr	   app.core.databaser
   app.core.configr   
app.modelsr   app.schemas.authr   r   r   app.services.authr   r   r   r   routerpostr*   r:   getr>   r=   r+   r)   <module>rK      s         = = = = = = = = = = = = 6 6 6 6 6 6 " " " " " " $ $ $ $ $ $ 7 7 7 7 7 7       < < < < < < < < < <            
')9(:	;	;	;[663:76??       760 Xe,,7>wyyPWPWX^P_P_ B B4 Bg B B B -,B  E,//-4W5L-M-M  d    0/  r+   