Ë
    §esjý  ã                   óÚ  — d dl Z e j                  j                  d d«       d dl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 d dlmZmZ d d	lmZ d d
lmZ  eddg¬«      Zej5                  ddd¬«       ee«       ee«      fde	defd„«       Zej9                  dddd¬«       ee«      fdede	fd„«       Zej=                  ddd¬«       edd¬ «      d ee«      fd!edede	fd"„«       Z ejC                  dd#d$¬«       edd%¬ «       ee«      fd!ede	fd&„«       Z"ej5                  d'd(d)¬«       ee«      fde	fd*„«       Z#ej9                  d+dd,d-¬«       ee«      fde	fd.„«       Z$y)/é    Nz/var/www/html/metafoliadorv2)Ú	APIRouterÚDependsÚHTTPExceptionÚPath)ÚSession)Úget_db)ÚUser)ÚRoleÚ
PermissionÚrole_permissions)ÚCreateRoleRequestÚUpdateRoleRequest)Úget_current_user)Úisoz/api/v1/adminÚadmin)ÚprefixÚtagsz/roleszListar rolesu§   Devuelve los roles segÃºn el permiso del usuario autenticado. Si el rol del usuario tiene all_permissions=true, lista todos; si no, solo los roles sin all_permissions.)ÚsummaryÚdescriptionÚdbÚcurrent_userc              ƒ   ó`  K  — | j                  t        «      j                  t        j                  |j                  k(  «      j                  «       }| j                  t        «      }|r.|j                  s"|j                  t        j                  dk(  «      }|j                  t        j                  «      j                  «       }g }|D ]Þ  }|j                  D �cg c]&  }|j                  |j                  |j                  dœ‘Œ( }}| j                  t        «      j                  t        j                  |j                  k(  «      j                  «       }	|j                  |j                  |j                  |j                  |j                  ||	t!        |j"                  «      dœ«       Œà |S c c}w ­w)NF)ÚidÚcodeÚname)r   r   Úall_permissionsr   ÚpermissionsÚusers_countÚ
created_at)Úqueryr
   Úfilterr   ÚroleÚfirstr   Úorder_byÚallr   r   r   r	   ÚcountÚappendr   r   r   )
r   r   Úcurrent_roleÚqÚrolesÚresultÚrÚpÚpermsÚuserss
             ú9/var/www/html/metafoliadorv2/app/api/routes/admin_rbac.pyÚ
list_rolesr1      s8  è ø€ à—8‘8œD“>×(Ñ(¬¯©°l×6GÑ6GÑ)GÓH×NÑNÓP€LØ
�‰”‹€AÙ˜L×8Ò8Ø�H‰H”T×)Ñ)¨UÑ2Ó3ˆØ�J‰J”t—y‘yÓ!×%Ñ%Ó'€EØ€FØò ˆØGHÇ}Á}ÖUÀ!˜Ÿ™ a§f¡f°a·f±fÓ=ÐUˆÐUØ—‘œ“×%Ñ%¤d§i¡i°1·6±6Ñ&9Ó:×@Ñ@ÓBˆØ�‰Ø—$‘$ §¡¸1×;LÑ;LØŸ=™=¸ÈuÜ˜aŸl™lÓ+ñ
õ 	ðð €Mùò Vùs   ‚CF.Ã+F)ÄB,F.éÉ   z	Crear rolud   Crea un nuevo rol con nombre, descripciÃ³n, flag all_permissions y lista de permission_ids opcional.)Ústatus_coder   r   Úbodyc              ƒ   ó¬  K  — | j                   st        dd¬«      ‚|j                  t        «      j	                  t        j                   | j                   k(  «      j                  «       }|rt        dd¬«      ‚t        | j                   | j                  | j                  xs d¬«      }|j                  |«       |j                  «        | j                  rp|j                  t        «      j	                  t        j                  j                  | j                  «      «      j                  «       }||_        |j                  «        d|j                  d	œS ­w)
Ni�  zNombre requerido©r3   Údetaili™  zEl rol ya existeÚ )r   r   r   T)Úokr   )r   r   r    r
   r!   r#   r   r   ÚaddÚcommitÚpermission_idsr   r   Úin_r%   r   )r4   r   Úexistingr,   r.   s        r0   Úcreate_roler?   %   só   è ø€ à�9Š9Ü¨Ð4FÔGÐGØ�x‰xœ‹~×$Ñ$¤T§Y¡Y°$·)±)Ñ%;Ó<×BÑBÓD€HÙÜ¨Ð4FÔGÐGÜ�$—)‘)¨T×-AÑ-AØ×)Ñ)Ò/¨Rô	1€Aà‡F�Fˆ1„IØ‡I�I„KØ×ÒØ—‘œÓ$×+Ñ+¬J¯M©M×,=Ñ,=¸d×>QÑ>QÓ,RÓS×WÑWÓYˆØˆŒØ
�	‰	ŒØ˜aŸd™dÑ#Ð#ùs   ‚EEz/roles/{role_id}zActualizar roluW   Modifica nombre, all_permissions, descripciÃ³n o lista de permisos de un rol existente..z
ID del rol)r   Úrole_idc              ƒ   ó\  K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  r|j                  |_        |j                  �|j                  |_        |j                  �|j                  |_        |j                  �`|j                  t        «      j                  t        j                  j                  |j                  «      «      j                  «       }||_        |j                  «        ddiS ­w©Ni”  zRol no encontrador6   r9   T)r    r
   r!   r   r#   r   r   r   r   r<   r   r=   r%   r   r;   )r@   r4   r   r,   r.   s        r0   Úupdate_rolerC   7   sã   è ø€ à
�‰”‹×ÑœdŸg™g¨Ñ0Ó1×7Ñ7Ó9€AÙÜ¨Ð4GÔHÐHØ‡y‚yØ—‘ˆŒØ×ÑÐ'Ø ×0Ñ0ˆÔØ×ÑÐ#Ø×(Ñ(ˆŒØ×ÑÐ&Ø—‘œÓ$×+Ñ+¬J¯M©M×,=Ñ,=¸d×>QÑ>QÓ,RÓS×WÑWÓYˆØˆŒØ‡I�I„KØ�$ˆ<Ðùs   ‚D*D,zEliminar roluZ   Elimina permanentemente un rol. Los usuarios que tenÃ­an este rol quedan sin rol asociado.zID del rol a eliminarc              ƒ   óø   K  — |j                  t        «      j                  t        j                  | k(  «      j	                  «       }|st        dd¬«      ‚|j                  |«       |j                  «        ddiS ­wrB   )r    r
   r!   r   r#   r   Údeleter;   )r@   r   r,   s      r0   Údelete_rolerF   I   s_   è ø€ à
�‰”‹×ÑœdŸg™g¨Ñ0Ó1×7Ñ7Ó9€AÙÜ¨Ð4GÔHÐHØ‡I�Iˆa„LØ‡I�I„KØ�$ˆ<Ðùs   ‚A8A:z/permissionszListar permisosuI   Devuelve los 32 permisos predefinidos del sistema, agrupados por mÃ³dulo.c              ƒ   ó,  K  — | j                  t        «      j                  t        j                  t        j                  «      j                  «       }|D �cg c]1  }|j                  |j                  |j                  |j                  dœ‘Œ3 c}S c c}w ­w)N)r   r   r   Úmodule)r    r   r$   rH   r   r%   r   r   )r   r.   r-   s      r0   Úlist_permissionsrI   U   sb   è ø€ à�H‰H”ZÓ ×)Ñ)¬*×*;Ñ*;¼Z¿_¹_ÓM×QÑQÓS€EØV[Ö\ÐQR�1—4‘4 §¡°·±À1Ç8Á8ÓLÒ\Ð\ùÒ\ùs   ‚ABÁ6BÂBz/permissions/seedzSembrar permisoszÕInserta los 32 permisos predefinidos del sistema si no existen. Idempotente: no duplica permisos ya existentes. Elimina automaticamente los permisos antiguos reportes.foliado-sitio y reportes.graficos-dependencia.c              ƒ   ó  K  — g d¢}ddg}d}|D ]^  }| j                  t        «      j                  t        j                  |k(  «      j	                  «       }|sŒI| j                  |«       |dz  }Œ` d}|D ]n  \  }}}| j                  t        «      j                  t        j                  |k(  «      j	                  «       }	|	rŒM| j                  t        |||¬«      «       |dz  }Œp | j                  «        d||t        |«      dœS ­w)	N) )zdashboard.viewzVer DashboardÚ	Dashboard)zconexiones.viewzVer ConexionesúConexiones API)zconexiones.createzCrear ConexionrL   )zconexiones.editzEditar ConexionrL   )zconexiones.deletezEliminar ConexionrL   )zconexiones.synczSincronizar SitiosrL   )zsitios.viewz
Ver SitiosÚSitios)zsitios.createzCrear SitiorM   )zsitios.editzEditar SitiorM   )zsitios.deletezEliminar SitiorM   )zsitios.synczSincronizar SitiorM   )zcarpetas.viewu   Ver Cuadro de ClasificaciÃ³núSeries, Subseries y Expedientes)zcarpetas.syncz+Sincronizar Series, Subseries y ExpedientesrN   )z
index.viewzVer Indice ElectronicoúIndice Electronico)zindex.generatezGenerar IndicerO   )zusuarios.viewzVer UsuariosÚUsuarios)zusuarios.createzCrear UsuariorP   )zusuarios.editzEditar UsuariorP   )zusuarios.deletezEliminar UsuariorP   )z
roles.viewz	Ver RolesÚRoles)zroles.createz	Crear RolrQ   )z
roles.editz
Editar RolrQ   )zroles.deletezEliminar RolrQ   )z	jobs.viewzVer TrabajosúTrabajos en Cola)zjobs.cancelzCancelar TrabajosrR   )z
jobs.purgezLimpiar ColarR   )zlistener-logs.viewzVer Logs APIzLogs API)zreportes.generatezGenerar ReportesÚReportes)zreportes.createzCrear Reporte ExternorS   )zreportes.editzEditar Reporte ExternorS   )zreportes.deletezEliminar Reporte ExternorS   )zreportes.togglezActivar/Inactivar ReportesrS   zreportes.foliado-sitiozreportes.graficos-dependenciar   é   )r   r   rH   T)r9   ÚcreatedÚremovedÚtotal)	r    r   r!   r   r#   rE   r:   r;   Úlen)
r   ÚdataÚstalerV   r   r-   rU   r   rH   r>   s
             r0   Úseed_permissionsr[   [   sø   è ø€ ò!€DðD &Ð'FÐG€EØ€GØò ˆØ�H‰H”ZÓ ×'Ñ'¬
¯©¸4Ñ(?Ó@×FÑFÓHˆÚØ�I‰I�aŒLØ�q‰L‰Gð	ð
 €GØ"ò Ñˆˆd�FØ—8‘8œJÓ'×.Ñ.¬z¯©À$Ñ/FÓG×MÑMÓOˆÚØ�F‰F”: 4¨d¸6ÔBÔCØ�q‰L‰Gð	ð
 ‡I�I„KØ 7°wÌÈTËÑSÐSùs   ‚ADÁA(DÃAD)%ÚsysÚpathÚinsertÚfastapir   r   r   r   Úsqlalchemy.ormr   Úapp.models.databaser   Úapp.models.userr	   Úapp.models.role_permissionr
   r   r   Úapp.schemasr   r   Úapp.api.routes.authr   Úapp.services.timezoner   ÚrouterÚgetr1   Úpostr?   ÚputÚintrC   rE   rF   rI   r[   © ó    r0   ú<module>rn      s  ðÛ 
Ø ‡�‡��Ð1Ô 2ç ;Ó ;Ý "å &Ý  ß IÑ Iß <Ý 0Ý %á	˜/°°	Ô	:€ð ‡�ˆH˜nð  ;d€ó  eÙ#*¨6£?ÉÐQaÓIbñ ˜ð À$ò ó eðð$ ‡�ˆX 3°ð  Jp€ó  qÙ=DÀV»_ñ $Ð-ð $°7ò $ó qð$ð" ‡�ÐÐ(8ð  G`€ó  aÙ%)¨#¸<Ô%HÐdhÑxð  AGó  yHñ ˜sð ÐPað Ðnuò ó aðð" ‡�Ð!¨>ð  Hd€ó  eÙ%)¨#Ð;RÔ%SÑcjÐkqÓcrñ ˜sð ÐY`ò ó eðð ‡�ˆNÐ$5ð  DO€ó  PÙ)0°«ñ ]˜wò ]ó Pð]ð
 ‡�Ð ¨cÐ;Mð  \s€ó  tÙ)0°«ñ 1T˜wò 1Tó tñ1Trm   