
    k)i              
          d Z ddlmZ 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 ddlmZmZmZmZmZmZmZmZ ddlmZmZ dd	lmZ  e       Zej=                  d
eej>                         ee      dde
dededefd       Z ej=                  deej>                         ee      dde
dedefd       Z!ej=                  deej>                         ee       ee      dde
dededefd       Z"ej=                  deej>                         ee       ee      dde
dedefd       Z#ejI                  deej>                         ee      ddedefd       Z%y)z
Authentication API routes.
    )Any)	APIRouterDependsHTTPExceptionstatusRequest)Session)get_db)services)LoginRequestSchemaLoginResponseSchemaRegisterRequestSchemaRegisterResponseSchemaRefreshTokenRequestSchemaAuthTokenSchemaLogoutResponseSchemaUserProfileSchema)get_current_userget_current_active_user)Userz/login)response_modelstatus_code)dbr   
login_datarequestreturnc                 4   |j                   r|j                   j                  nd}|j                  j                  d      }t	        j
                  | |||      \  }}|s:d|v rt        t        j                  |      t        t        j                  |      |S )z2
    Authenticate user by email and password.
    Nz
user-agent)
ip_address
user_agentzIncorrect email or passwordr   detail)
clienthostheadersgetr   
login_userr   r   HTTP_401_UNAUTHORIZEDHTTP_400_BAD_REQUEST)r   r   r   r   r   login_responsemessages          R/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/src/apps/auth/router.pyloginr,      s     )0$$DJ$$\2J&11
	NG (G3"88 
  "77 
     z/refreshrefresh_requestc                 r    t        j                  | |      \  }}|st        t        j                  |      |S )z3
    Refresh access token using refresh token.
    r    )r   refresh_access_tokenr   r   r'   )r   r.   token_responser*   s       r+   refresh_tokenr2   [   s?     ';;BPNG44
 	

 r-   z/logout)r   current_userr3   c                 
   |j                   j                  d      }|r|j                  d      st        t        j
                  d      |j                  dd      }t        j                  | |      }t        d|rdnd	      }|S )
z7
    Logout current user (revoke current session).
    authorizationzBearer zInvalid authorization headerr     zLogout successful   r   )r*   logged_out_sessions)
r$   r%   
startswithr   r   r'   replacer   revoke_session_by_tokenr   )r   r3   r   auth_headertokensuccesslogout_responses          r+   logoutr@   o   s     //%%o6Kk44Y?441
 	

 	2.E ..r59G*#!(AaO
 r-   z/logout-allc                 N    t        j                  | |j                        \  }}|S )zC
    Logout user from all sessions (revoke all user sessions).
    )user_id)r   logout_userid)r   r3   r?   r*   s       r+   logout_all_sessionsrE      s%      (33BPOWr-   z/mer3   c                 ,    t        j                  |       S )z5
    Get current authenticated user information.
    )r   get_current_user_profilerF   s    r+   get_current_user_inforI      s     ,,\::r-   N)&__doc__typingr   fastapir   r   r   r   r   sqlalchemy.ormr	   src.core.databaser
   src.apps.authr   !src.apps.auth.schemas.auth_commonr   r   r   r   r   r   r   r   src.apps.auth.utils.authr   r   src.apps.users.models.userr   routerpostHTTP_200_OKr,   r2   r@   rE   r%   rI    r-   r+   <module>rW      s    F F " $ "	 	 	 O +	 X&9vGYGYZ &/   #  	 
 	  [ ~ ZVEWEWX &/ / 		 Y& Y';I[I[\ &/ !12  	
 	 ]< ]+?VM_M_` &/ !12

 
 		
 a
 E"3ASAST !!89;; 	; U;r-   