
    'iT4                        d dl mZmZmZ d dlmZ d dlmZ d dlZ	d dl
Z
d dlZd dlZ ej                  e      Z eded      Zej#                  dd	g
      d        Zej#                  dd	g
      d        Zej#                  ddg
      ed               Zej#                  dddg
      ed               Zej#                  dd	g
      ed               Zej#                  dd	g
      d        Zy)    )	Blueprintrequestjsonify)db)token_requiredNusuariosz/v1/usuarios)
url_prefixz	/registroPOST)methodsc            
         t        j                         } g d}|D ])  }| j                  |      rt        dd| dd      dfc S  | d   }| d   }| d	   }| d
   }| d   }| j                  dd      }| j                  dd      }	t	        j
                         }
|
st        ddd      dfS 	 |
j                  d      }|j                  d||f       |j                         r0t        ddd      df|j                          |
j                          S t        j                  |j                               j                         }|j                  d||||||f       |j                  }dd l}|j!                  d      }|j                  d|||	f       |
j#                          t        dd|||||d      df|j                          |
j                          S # t$        j&                  j(                  $ rb}|
j+                          t,        j/                  d|        t        ddd      dfcY d }~j                          |
j                          S d }~ww xY w# j                          |
j                          w xY w)N)nombreapellidousernamemailpassworderrorzCampo z es obligatoriostatusmessage  r   r   r   r   r   
privacidadr   tokenFCM %   Error de conexión a la base de datos  T
dictionaryzHSELECT id FROM Xalarrazabal025_usuarios WHERE username = %s OR mail = %szEl usuario o correo ya existezINSERT INTO Xalarrazabal025_usuarios 
            (nombre, apellido, username, mail, contrasenia, privacidad) 
            VALUES (%s, %s, %s, %s, %s, %s)    _INSERT INTO Xalarrazabal025_user_app 
            (idUser, token, tokenFCM) VALUES (%s, %s, %s)successzRegistro exitoso)r   r   tokenr   r   r   r      Database error: zError al registrar usuario)r   get_jsongetr   r   get_connectioncursorexecutefetchoneclosehashlibmd5encode	hexdigest	lastrowidsecrets	token_hexcommitmysql	connectorErrorrollbackloggerr   )datarequired_fieldsfieldr   r   r   r   r   r   r   
connectionr'   hashed_passworduser_idr0   r!   es                    //home/asierla/Garatu/api/app/usuarios/routes.pyregistror@      s   DLO  xx!#E7/:    (^FJHJH<DJH,*Jxx
B'H""$J>
   	
;""d"3 	Vt	
 ??!:  b 	Y "++hoo&78BBD 	/ Xx
K		
 "" 	!!"% 	=eX&	
 	)  
  $ 	 ??   's+,3
   	
 	 	s8   +AG B#G I27I)I*I II "I9z/loginc                  L   t        j                         } | j                  d      }| j                  d      }| j                  dd      }|r|st        ddd      dfS t	        j
                         }|st        dd	d      d
fS 	 |j                  d      }|j                  d|f       |j                         }|s0t        ddd      df|j                          |j                          S t        j                  |j                               j                         }||d   k7  r0t        ddd      df|j                          |j                          S dd l}|j                  d      }	|j                  d|d   |	|f       |j!                          d }
|d   r't#        j$                  |d         j'                  d      }
t        d|	d|d   |d   |d   |d   |
d      |j                          |j                          S # t(        j*                  j,                  $ rb}|j/                          t0        j3                  d|        t        dd d      d
fcY d }~j                          |j                          S d }~ww xY w# j                          |j                          w xY w)!Nr   r   r   r   r   u&   Usuario y contraseña son obligatoriosr   r   r   r   Tr   z}SELECT id, nombre, apellido, username, mail, contrasenia, foto 
            FROM Xalarrazabal025_usuarios WHERE username = %sUsuario no encontrado  contraseniau   Contraseña incorrecta  r   r   r   idfotozutf-8r    u   Inicio de sesión exitosor   r   r   )r   r!   mensajer   r   r   r   rG   r#   zError en el servidor)r   r$   r%   r   r   r&   r'   r(   r)   r*   r+   r,   r-   r.   r0   r1   r2   base64	b64encodedecoder3   r4   r5   r6   r7   r   )r8   r   r   r   r;   r'   userhashed_inputr0   r!   	foto_datar>   s               r?   loginrO   e   s   Dxx
#Hxx
#Hxx
B'H8?
   	
 ""$J>
   	
>""d"3AK	

  !2  d 	[ {{8??#45??A4..!3  T 	K 	!!"% 	=$Z)	
 	 	<((f6==gFI28nZ(Z(L	
 	& 	 ??   's+,-
   	
 	 	s?   AG? +AG? B
G? ?I>7I9I>J 9I>>J "J#z/perfilPUTc                  |   t        j                         } | j                  d      }| j                  d      }| j                  d      }| j                  d      }t        d ||||fD              rt	        ddd      d	fS t        j                         }|st	        dd
d      dfS 	 |j                  d      }|rb|j                  d|t         j                  f       |j                         r0t	        ddd      d	f|j                          |j                          S g }g }|"|j                  d       |j                  |       |"|j                  d       |j                  |       |"|j                  d       |j                  |       |St        j                  |j                               j!                         }	|j                  d       |j                  |	       |j                  t         j                         ddj#                  |       d}
|j                  |
|       |j                  dt         j                  f       |j                         }|j%                          t	        dd|d      |j                          |j                          S # t&        j(                  j*                  $ rb}|j-                          t.        j1                  d|        t	        ddd      dfcY d }~j                          |j                          S d }~ww xY w# j                          |j                          w xY w)Nr   r   r   r   c              3   $   K   | ]  }|d u  
 y w)N ).0r:   s     r?   	<genexpr>z$actualizar_perfil.<locals>.<genexpr>   s     
IU5D=
Is   r   z3Debe proporcionar al menos un campo para actualizarr   r   r   r   Tr   zDSELECT id FROM Xalarrazabal025_usuarios WHERE mail = %s AND id != %su7   El correo electrónico ya está en uso por otro usuarioznombre = %szapellido = %sz	mail = %szcontrasenia = %sz$UPDATE Xalarrazabal025_usuarios SET z, z WHERE id = %szSSELECT nombre, apellido, username, mail FROM Xalarrazabal025_usuarios WHERE id = %sr    z Datos actualizados correctamente)r   r   rL   r#   zError al actualizar los datos)r   r$   r%   allr   r   r&   r'   r(   r=   r)   r*   appendr+   r,   r-   r.   joinr2   r3   r4   r5   r6   r7   r   )r8   r   r   r   r   r;   r'   updatesparamsr<   queryrL   r>   s                r?   actualizar_perfilr\      s    DXXhFxx
#H88FDxx
#H 
Ivxx&H
IIL
   	
 ""$J>
   	
A""d"3 NNVw'  %X   l 	c NN=)MM&!NN?+MM(#NN;'MM$%kk(//*;<FFHONN-.MM/*goo&6tyy7I6J.Yuf% 	a__	
  9
  	 ??   's+,6
   	
 	 	s8   &AJ EJ L47L+L,L LL "L;z/fotoGETc                     t        j                         } | st        ddd      dfS 	 | j                  d      }t        j
                  dk(  r|j                  dt        j                  f       |j                         }|s1t        dd	d d
      df|j                          | j                          S |d   }t        dd|d
      |j                          | j                          S t        j
                  dk(  rt	        j                         }|j                  d      }|s0t        ddd      df|j                          | j                          S |j                  d|t        j                  f       | j                          t        dd|d      |j                          | j                          S 	 |j                          | j                          y # t        j                  j                  $ rb}| j!                          t"        j%                  d|        t        ddd      dfcY d }~j                          | j                          S d }~ww xY w# j                          | j                          w xY w)Nr   r   r   r   Tr   r]   z7SELECT foto FROM Xalarrazabal025_usuarios WHERE id = %srB   )r   r   rG   rC   rG   r    zFoto obtenida correctamenterP   imgzImagen no proporcionadar   z;UPDATE Xalarrazabal025_usuarios SET foto = %s WHERE id = %sz Imagen actualizada correctamente)r   r   r_   r#   Error de base de datos)r   r&   r   r'   r   methodr(   r=   r)   r*   r$   r%   r2   r3   r4   r5   r6   r7   r   )r;   r'   resultrN   r8   r_   r>   s          r?   gestionar_fotorc     sZ    ""$J>
   	
8""d"3>>U"NNI" __&F%6    	X 	O vI#8! J 	A ^^u$##%D((5/C%8   4 	- NNMgoo&
 #=  	A %> 	 ??   's+,/
   	
 	 	sD   A(G 1G %A	G A G I/7I&I'I II "I6z/logoutc                     t        j                         } | st        ddd      dfS 	 | j                         }|j	                  dt
        j                  f       | j                          |j                  dkD  r.t        ddd      |j                          | j                          S t        dd	d      d
f|j                          | j                          S # t        j                  j                  $ rb}| j                          t        j                  d|        t        ddd      dfcY d }~j                          | j                          S d }~ww xY w# j                          | j                          w xY w)Nr   r   r   r   z5DELETE FROM Xalarrazabal025_user_app WHERE token = %sr   r    u   Sesión cerrada correctamentezToken no encontradorC   r#   u   Error al cerrar sesión)r   r&   r   r'   r(   r   r!   r2   rowcountr*   r3   r4   r5   r6   r7   r   )r;   r'   r>   s      r?   logoutrf   Y  sj    ""$J>
   	
""$C]]	

 	??Q#: $ 	 !0   	 ??   's+,0
   	
 	 	s6   AC &C E37E*E+E EE "E:z/verificar-tokenc                     t        j                         } | j                  d      }| j                  d      }|st        ddd      dfS |st        ddd      dfS t	        j
                         }|st        ddd      d	fS 	 |j                  d
      }|j                  d|f       |j                         }|ro|j                  d||f       |j                          t        dd|d   |d   r|d   j                         nd d      |j                          |j                          S t        ddd      df|j                          |j                          S # t        j                  j                  $ rb}|j                          t         j#                  d|        t        ddd      d	fcY d }~j                          |j                          S d }~ww xY w# j                          |j                          w xY w)Nr!   r   r   z!Token de usuario no proporcionador   r   zToken FCM no proporcionador   r   Tr   zCSELECT idUser, fecha FROM Xalarrazabal025_user_app WHERE token = %szBUPDATE Xalarrazabal025_user_app SET tokenFCM = %s WHERE token = %sr    u   Token válido y FCM actualizadoidUserfecha)r   r   rh   ri   invalidu   Token no válido o expiradorE   r#   r`   )r   r$   r%   r   r   r&   r'   r(   r)   r2   	isoformatr*   r3   r4   r5   r6   r7   r   )r8   r!   r   r;   r'   rb   r>   s          r?   verificar_tokenrl     s   DHHWExx
#H:
   	
 3
   	
 ""$J>
   	
%""d"3QH	
 "NNT5! #< *8>w224T	 ( 	 #8   	 ??   's+,/
   	
 	 	s7   BE (E G57G,G-G GG "G<)flaskr   r   r   databaser   authr   mysql.connectorr3   r+   rI   logging	getLogger__name__r7   usuarios_bprouter@   rO   r\   rc   rf   rl   rS       r?   <module>rw      sG   - -      			8	$
HH;1U 2Un 8fX.R /Rh 9ug.W  /Wr 7UEN3@  4@D 9vh/%  0%N %x8> 9>rv   