
    fei              
          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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jK                  deej@                         ee       ee      dde
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UserMeResponseSchema)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          D/var/www/html/hwPaymentPortal-be-uat/backend/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_tokenr3   \   s?     ';;BPNG44
 	

 r.   z/logoutr   current_userr5   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   r5   r   auth_headertokensuccesslogout_responses          r,   logoutrB   p   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   r5   rA   r+   s       r,   logout_all_sessionsrG      s%      (33BPOWr.   z/mec                 .    t        j                  | |      S )zK
    Get current authenticated user information with merchant details.
    )r   get_current_user_profiler4   s     r,   get_current_user_inforJ      s     ,,R>>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   r   src.apps.auth.utils.authr   r   src.apps.users.models.userr   routerpostHTTP_200_OKr-   r3   rB   rG   r&   rJ    r.   r,   <module>rX      s    F F " $ "
 
 
 O +	 X&9vGYGYZ &/   #  	 
 	  [ ~ ZVEWEWX &/ / 		 Y& Y';I[I[\ &/ !12  	
 	 ]< ]+?VM_M_` &/ !12

 
 		
 a
 E"6FDVDVW &/ !89?? ? 		? X?r.   