
    Xhp                     |   d dl mZmZ d dl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 d dlmZ d dl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! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z*  e       Z+e+jY                  de       ee#      fdededefd       Z-e+j]                  de       ee#       ee*      fdedefd       Z/e+jY                  dee
j`                         ee#      fdedefd       Z1e+jY                  de       e e)              ee#      d fd!e2ded"e3fd#       Z4y$)%    )AnyDict)	APIRouterDependsHTTPException)Session)status)Request)LoginRequestLoginResponse)UserRegisterSchema)get_user
login_userlogout_user)create_user)ResponseModel)File)Users)UserReturnSchema)get_user_by_user_id_service)get_db)APIException)UserAccessLevel)	AuthGuardget_current_userz/login)response_modelpayloadrequestdbc           	      0  K   	 t        || |       d{   \  }}|d|dS 7 # t        $ r/}t        t        i t        j
                  t        |            d}~wt        $ r/}t        t        i t        j
                  t        |            d}~ww xY ww)z4
    Authenticate user and return access token.
    )r   r   r   Nbearer)access_token
token_type
expires_at)moduleerrorstatus_codemessage)r   r   r   __name__r	   HTTP_400_BAD_REQUESTstr	Exception)r   r   r   r"   r$   es         [/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/auth/routers/auth_router.pyloginr/      s     

)3*
 $
 j !-HT^__$
  
33F	
 	
  
33F	
 	

s<   B% #% B% 	B*AB$*BBBz/mecurrent_userc                 l   K   t        j                  |      }t        |t        j                  d      S w)Nz!User profile fetched successfullydatar'   r(   )r   model_validater   r	   HTTP_200_OK)r   r0   results      r.   read_users_mer7   :   s,     ,,\:Ff&2D2DNqrrs   24z	/register)r   r'   c                    K   t        || t        j                  j                         d{   }t	        |t
        j                  d      S 7  w)z:
    Register a new user (local or foreign visitor) .
    )access_levelNz#Verification mail sent successfullyr2   )r   r   SUPER_ADMINvaluer   r	   HTTP_201_CREATED)r   r   created_users      r.   register_user_router>   @   sF      %R?Z?Z?`?`aaLv'>'>Hm  bs   *AA!Az/logoutFtokenother_sessionsc                 r   K   t        || |       d{   }t        |t        j                  d      S 7  w)z5
    Logout a user by invalidating their session
    )r   r?   r@   NzUser logged out successfullyr2   )r   r   r	   r5   )r?   r   r@   r6   s       r.   logoutrB   L   s5     
 "E.QQFf&2D2DNlmm Rs   75!7N)5typingr   r   fastapir   r   r   sqlalchemy.ormr   	starletter	   starlette.requestsr
   "src.apps.auth.schemas.auth_schemasr   r   "src.apps.auth.schemas.user_schemasr   $src.apps.auth.services.auth_servicesr   r   r   $src.apps.auth.services.user_servicesr   $src.apps.base.schemas.response_modelr   src.apps.files.models.filer   src.apps.user.models.user_modelr   "src.apps.user.schemas.user_schemasr   $src.apps.user.services.user_servicesr   src.core.dependenciesr   src.core.exceptionsr   src.utils.enumsr   src.utils.guardr   r   routerpostr/   getr7   r<   r>   r+   boolrB        r.   <module>r[      s\    5 5 "  & B R R < > + 1 ? L ( , + 7	 Xm4GNv 
 
 
W 
 5
8 E-0&-foWUeMf sG sU s 1s
 [FD[D[\IPQW '9 w  ] Y}5%ik2'&/jo n n ncg n 6nrZ   