+
    i#                         ^ RI Ht ^ RI HtHtHtHtHtHt ^ RI	t	^ RI
Ht ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHtHt R
R	 ltR# )    )current_app)requestrender_templateredirecturl_forjsonifysessionNwraps)datetime)get_connection)send_activation_email)consultar_usersActualizar_ultimo_loginc                   a a S P                   ! R R.R7      R 4       pS P                   ! R4      R 4       pR pVS n        S P                   ! R4      VR 4       4       pS P                   ! R	R.R7      V V3R
 l4       p\        # )z/auth/loginPOST)methodsc            
         \         P                  ! 4       p V '       g   \        RRRR/4      R3# V P                  R4      pV P                  R4      pV P                  RR4      pV'       d	   V'       g   \        RRRR	/4      R3# \	        V4      p\        V\        4      '       d   \        V4      ^8X  d   V# TpVR
,          pVR,          pVR,          pVR,          p	V	R8w  d   \        RRRR/4      R3# Vf   \        RRRR/4      R3#  \        V4      P                  4       p
\        P                  ! VP                  R4      V
P                  R4      4      pV'       g   \        RRRR/4      R3# \        V4      pV'       g   \        RV 24       \        P                   ! 4        V\        R&   V\        R&   V'       d   R\        n        \        RRRRRR/4      #   \$         d*   p\        RT 24       \        RRRR/4      R3u Rp?# Rp?ii ; i  \$         d6   p\        RT 24       \        RRRR\        T4       2/4      R3u Rp?# Rp?ii ; i) uP   
Autenticación de usuarios.
Verifica las credenciales contra la base de datos.
successFmessagezNo se recibieron datos.  emailpasswordrememberu   Falta correo o contraseña.UserIDEmailPasswordHashStatusACTIVOu?   Tu cuenta no está activa. Por favor, activa tu cuenta primero.i  Nug   Debes establecer tu contraseña primero. Verifica tu correo electrónico para el enlace de activación.zutf-8uF   Credenciales incorrectas. Por favor, verifica tu correo y contraseña.u?   Advertencia: No se pudo actualizar último login para usuario: user_idTu   Inicio de sesión exitoso.r   z/indexu    Error al verificar contraseña: u@   Error al verificar credenciales. Por favor, inténtalo de nuevo.  zError en login: u$   Error durante el inicio de sesión: )r   get_jsonr   getr   
isinstancetuplelenstrstripbcryptcheckpwencoder   printr	   clear	permanent	Exception)datar   r   r   result	user_datar    db_emailpassword_hashstatus
clean_hashis_validupdate_successes                 XC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\Security_Module\login.py
login_authauth_routes.<locals>.login_auth   s   \	##%D	5)=VWXZ]]]HHW%Exx
+Hxx
E2H	5)=Z[\^aaa$U+F&%((S[A-= I)G )H%n5Mx(F !u`     $u   I    
+ /557
 ">>OOG,%%g.
  "!5!#k$    "9!A%[\c[def %,	"#(  (,G%t;     8<=ua      	$QC()5A#a&J   	s}   H H ;H ,H 4H 2H 8=H 6H A&G 3AG G H*HH	H HH I!*IIIz/auth/logoutc                 T    \         P                  ! 4        \        \        R4      4      # )u    
Cierra la sesión del usuario.
login)r	   r-   r   r        r:   logout_auth auth_routes.<locals>.logout_autht   s    
 	())r@   c                 0   a  \        S 4      V 3R  l4       pV# )c                  R   < R \         9  d   \        \        R4      4      # S! V / VB # )r    r>   )r	   r   r   )argskwargsfs   *,r:   decorated_function?auth_routes.<locals>.login_required.<locals>.decorated_function~   s+    ' 011d%f%%r@   r
   )rG   rH   s   f r:   login_required#auth_routes.<locals>.login_required}   s!    	q	& 
	& "!r@   z/profilec                      \        R 4      # )zprofile.html)r   r?   r@   r:   profileauth_routes.<locals>.profile   s     ~..r@   z/auth/reset-password-requestc                   <  \         P                  ! 4       p V '       d   V P                  R4      '       g   \        RRRR/4      R3# V P                  R4      pRp\	        4       ;_uu_ 4       pVP                  4       pVP                  W!.4       VP                  4       pV'       g   \        RRRR	/4      uuR
R
R
4       # Vw  rgp\        SSV4      p	\        V	\        4      '       d`   V	w  r \        V
R4      '       d   V
P                  4       pMV
P                  p\        RRRVP                  RR4      /4      V3uuR
R
R
4       # \        RRRR/4      uuR
R
R
4       #   \         d4   p\        RT 24       \        RRRR/4      R3u R
p?uuR
R
R
4       # R
p?ii ; i  + '       g   i     R
# ; i  \         dG   p\        RT 24       ^ R
Ip\        TP!                  4       4       \        RRRR/4      R3u R
p?# R
p?ii ; i)us   
Procesa la solicitud de recuperación de contraseña.
Genera un token y envía un correo electrónico al usuario.
r   r   Fr   u   Correo electrónico requeridor   zu
                SELECT UserID, Email, Status
                FROM Users
                WHERE Email = ?
            TuT   Si tu correo está registrado, recibirás un enlace para restablecer tu contraseña.Nr"   errorz*Error al enviar correo de restablecimientoz&Error al procesar respuesta de error: r!   ub   Se ha enviado un enlace para restablecer tu contraseña. Por favor, revisa tu correo electrónico.z(Error en solicitud de restablecimiento: uA   Error al procesar la solicitud. Por favor, inténtalo más tarde.)r   r"   r#   r   r   cursorexecutefetchoner   r$   r%   hasattrjsonr/   r,   	traceback
format_exc)r0   r   check_queryconnrQ   r2   r    
user_emailr5   token_resultjson_responsestatus_code
error_datar9   rV   appmails                  r:   auth_request_password_reset0auth_routes.<locals>.auth_request_password_reset   s)   E	##%Dtxx00	5)=\]^`cccHHW%EK  !!T{G4"OO-	  #!4!#y$  "! /8+V  5S$H lE221=.M "=*==)6)?)?)AJ)6););J  '%u%z~~g?k'l(   ( (? "!T t   D  U "!F %   FqcJK&%u%'S(        K "!F G "!!^  	<QC@A)&&()5^   		s   F6 F6 F6 %F6 -A	F"6
F6 ,F".AE!=
F6 F"
F6 !F,F
FF"
F6 FF""F3	-F6 3F6 6H;H<HH)routerJ   auth_routes)r_   r`   r;   rA   rJ   rM   ra   s   ff     r:   rd   rd      s    YY}vh/a 0aF 	YY~* *" (C 	YYz/  / 	YY-x@J AJZ r@   )N)flaskr   r_   r   r   r   r   r   r	   r)   	functoolsr   r   jwtConsultas_SQL.conexionr    App.Security_Module.UserPasswordr   Consultas_SQL.Security.loginSQLr   r   rd   r?   r@   r:   <module>rk      s+   
 % O O    
 1 B TMr@   