Ë
    ×esjO  ã                   ó°  — d dl Z e j                  j                  d d«       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 d dlmZ d d	lmZmZ d d
lmZ d dlmZ  eddg¬«      Zej7                  ddd¬«       edd¬«       ee«      fdede
fd„«       Zej7                  ddd¬«       edd¬«       ee«      fdede
fd„«       ZejA                  ddd d!¬"«       ee«      fd#ede
fd$„«       Z!ejE                  dd%d&¬«       edd¬«      d ee«      fded#ede
fd'„«       Z#ejI                  dd(d)¬«       edd*¬«       ee«      fdede
fd+„«       Z%y),é    Nz/var/www/html/metafoliadorv2)Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚPath)ÚSession)Úfunc)Úget_db)ÚUser)ÚRole)ÚCreateUserRequestÚUpdateUserRequest)Úhash_password)Úisoz/api/v1/usersÚusers)ÚprefixÚtagsÚ zListar usuarioszCLista todos los usuarios del sistema. Filtrable por email o nombre.)ÚsummaryÚdescriptionzBuscar por email o nombre)r   ÚsearchÚdbc              ƒ   ó6  ‡‡K  — ‰j                  t        «      }| rV|j                  t        j                  j	                  d| › d�«      t        j
                  j	                  d| › d�«      z  «      }|j                  t        j
                  «      j                  «       }i Šˆˆfd„}|D �cg c]a  }|j                  |j
                  |j                  |j                   ||j                  «      |j                  t        |j                  «      dœ‘Œc c}S c c}w ­w)Nú%c                 óÂ   •— | ‰vrV‰j                  t        «      j                  t        j                  | k(  «      j	                  «       }|r|j
                  nd‰| <   ‰|    S )NF)Úqueryr   ÚfilterÚnameÚfirstÚall_permissions)Ú	role_nameÚrr   Ú
role_caches     €€ú:/var/www/html/metafoliadorv2/app/api/routes/users_admin.pyÚget_role_all_permissionsz,list_users.<locals>.get_role_all_permissions   sT   ø€ Ø˜JÑ&Ø—‘œ“×%Ñ%¤d§i¡i°9Ñ&<Ó=×CÑCÓEˆAÙ9: A×$5Ò$5ÀˆJ�yÑ!Ø˜)Ñ$Ð$ó    )Úidr   ÚemailÚroleÚrole_all_permissionsÚactiveÚ
created_at)r   r   r   r(   Úiliker   Úorder_byÚallr'   r)   r+   r   r,   )r   r   Úqr   r%   Úur#   s    `    @r$   Ú
list_usersr2      sÝ   ùè ø€ à
�‰”‹€AÙØ�H‰H”T—Z‘Z×%Ñ%¨¨&¨° mÓ4´t·y±y·±ÈÈ6È(ÐRSÀ}Ó7UÑUÓVˆØ�J‰J”t—y‘yÓ!×%Ñ%Ó'€EØ€Jõ%ð öð ð —$‘$Ø—F‘FØ—W‘WØ—F‘FÙ$<¸Q¿V¹VÓ$DØ—h‘hÜ˜aŸl™lÓ+ó	
òð ùò ùs   „B'DÂ+A&DÄDz
/{user_id}zObtener usuarioz,Devuelve el detalle de un usuario por su ID..zID del usuarioÚuser_idc              ƒ   óJ  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  |j                  |j                  |j                  |j                  t        |j                  «      dœS ­w)Né”  úUsuario no encontrado©Ústatus_codeÚdetail)r'   r   r(   r)   r+   r,   )r   r   r   r'   r   r   r   r(   r)   r+   r   r,   ©r3   r   r1   s      r$   Úget_userr;   ,   sz   è ø€ à
�‰”‹×ÑœdŸg™g¨Ñ0Ó1×7Ñ7Ó9€AÙÜ¨Ð4KÔLÐLà�d‰dØ—‘Ø—‘Ø—‘Ø—(‘(Ü˜!Ÿ,™,Ó'ñð ùs   ‚B!B#éÉ   zCrear usuariouW   Registra un nuevo usuario con email, contraseÃ±a (hasheada con SHA-256) y rol asignado.)r8   r   r   Úbodyc              ƒ   ó¦  K  — | j                   r| j                  st        dd¬«      ‚|j                  t        «      j                  t        j                   | j                   k(  «      j                  «       }|rt        dd¬«      ‚t	        | j                  xs d| j                   t        | j                  «      | j                  xs d| j                  �| j                  nd¬	«      }|j                  |«       |j                  «        |j                  |«       |j                  |j                  |j                   |j                  |j                  d
œS ­w)Ni�  zemail y password son requeridosr7   é™  úEl email ya exister   ÚuserT)r   r(   Úpassword_hashr)   r+   )r'   r   r(   r)   r+   )r(   Úpasswordr   r   r   r   r   r   r   r)   r+   ÚaddÚcommitÚrefreshr'   )r=   r   Úexistingr1   s       r$   Úcreate_userrH   ;   sï   è ø€ à�:Š:˜TŸ]š]Ü¨Ð4UÔVÐVØ�x‰xœ‹~×$Ñ$¤T§Z¡Z°4·:±:Ñ%=Ó>×DÑDÓF€HÙÜ¨Ð4HÔIÐIÜØ�Y‰YŠ_˜"Ø�j‰jÜ# D§M¡MÓ2Ø�Y‰YÒ ˜&Ø"Ÿk™kÐ5ˆt�{Š{¸4ô	€Að ‡F�Fˆ1„IØ‡I�I„KØ‡J�Jˆq„MØ—$‘$ §¡°·±À!Ç&Á&ÐTU×T\ÑT\Ñ]Ð]ùs   ‚EEzActualizar usuariouW   Modifica datos de un usuario: nombre, email, contraseÃ±a, rol o estado activo/inactivo.c              ƒ   óæ  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  �|j                  |_        |j                  r|j                  t        «      j                  t        j                  |j                  k(  t        j                  | k7  «      j	                  «       }|rt        dd¬«      ‚|j                  |_        |j                  rt        |j                  «      |_
        |j                  �|j                  |_        |j                  �|j                  |_        |j                  «        ddiS ­w)Nr5   r6   r7   r?   r@   ÚokT)r   r   r   r'   r   r   r   r(   rC   r   rB   r)   r+   rE   )r3   r=   r   r1   rG   s        r$   Úupdate_userrK   O   s  è ø€ à
�‰”‹×ÑœdŸg™g¨Ñ0Ó1×7Ñ7Ó9€AÙÜ¨Ð4KÔLÐLØ‡y�yÐØ—‘ˆŒØ‡z‚zØ—8‘8œD“>×(Ñ(¬¯©°t·z±zÑ)AÄ4Ç7Á7ÈgÑCUÓV×\Ñ\Ó^ˆÙÜ¨CÐ8LÔMÐMØ—*‘*ˆŒØ‡}‚}Ü'¨¯©Ó6ˆŒØ‡y�yÐØ—‘ˆŒØ‡{�{ÐØ—;‘;ˆŒØ‡I�I„KØ�$ˆ<Ðùs   ‚E/E1zEliminar usuarioz/Elimina permanentemente un usuario del sistema.zID del usuario a eliminarc              ƒ   óø   K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  |«       |j                  «        ddiS ­w)Nr5   r6   r7   rJ   T)r   r   r   r'   r   r   ÚdeleterE   r:   s      r$   Údelete_userrN   e   s_   è ø€ à
�‰”‹×ÑœdŸg™g¨Ñ0Ó1×7Ñ7Ó9€AÙÜ¨Ð4KÔLÐLØ‡I�Iˆa„LØ‡I�I„KØ�$ˆ<Ðùs   ‚A8A:)&ÚsysÚpathÚinsertÚfastapir   r   r   r   r   Úsqlalchemy.ormr   Ú
sqlalchemyr	   Úapp.models.databaser
   Úapp.models.userr   Úapp.models.role_permissionr   Úapp.schemasr   r   Úapp.services.auth_servicer   Úapp.services.timezoner   ÚrouterÚgetÚstrr2   Úintr;   ÚpostrH   ÚputrK   rM   rN   © r&   r$   ú<module>rb      sÐ  ðÛ 
Ø ‡�‡��Ð1Ô 2ç BÕ BÝ "Ý å &Ý  Ý +ß <Ý 3Ý %á	˜/°°	Ô	:€ð ‡�ˆBÐ)Ð7|€Ó}Ù#(¨Ð;VÔ#WÑgnÐouÓgvñ ˜Sð Ð]dò ó ~ðð2 ‡�ˆLÐ"3ÐAo€ÓpÙ"& sÐ8HÔ"IÑY`ÐagÓYhñ ˜Cð Èwò ó qðð ‡�ˆR˜S¨/ð  Ha€ó  bÙ=DÀV»_ñ ^Ð-ð ^°7ò ^ó bð^ð& ‡�ˆLÐ"6ð  E^€ó  _Ù%)¨#Ð;KÔ%LÐhlñ  }Dð  EKó  }Lñ ˜sð ÐTeð Ðryò ó _ðð* ‡�ˆ|Ð%7ÐEv€ÓwÙ%)¨#Ð;VÔ%WÑgnÐouÓgvñ ˜sð Ð]dò ó xñr&   