You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
En informes que utilizan LEFT JOIN para relacionar dos o más módulos, el sistema aplica incorrectamente los filtros de seguridad. Actualmente, las restricciones de acceso de los módulos secundarios están limitando la visibilidad de los registros del módulo principal. Como resultado, los usuarios no pueden ver todos los registros del módulo principal a los que deberían tener acceso, sino solo aquellos que también tienen registros relacionados y accesibles en los módulos secundarios. Este comportamiento compromete la integridad y utilidad de los informes multi-módulo para usuarios con permisos de acceso limitados.
Comportamiento actual vs. esperado
Actual
Los usuarios solo ven registros del módulo principal que están relacionados con registros del módulo secundario a los que también tienen acceso.
Esperado
Los usuarios deben ver todos los registros del módulo principal a los que tienen acceso.
En las columnas de módulos secundarios, solo deben ver datos en los registros a los que tienen acceso, manteniendo vacíos los demás.
Problema técnico
La consulta SQL actual aplica los filtros de seguridad de ambos módulos en la cláusula WHERE, lo que limita incorrectamente los resultados del LEFT JOIN.
Solución propuesta
Modificar la generación de consultas SQL para aplicar los filtros de seguridad de los módulos relacionados en la cláusula ON del LEFT JOIN, manteniendo solo los filtros del módulo principal en la cláusula WHERE.
Ejemplo de consulta corregida:
SELECT`sda_contacts`.`full_name`AS`Nombre completo`,
CAST(SUM(`sda_stic_payment_commitments`.`amount`) ASDECIMAL(32,2)) AS`Importe`FROM sda_contacts
LEFT JOIN`sda_stic_payment_commitments`ON`sda_contacts`.`id`=`sda_stic_payment_commitments`.`stic_payment_commitments_contactscontacts_ida`AND ( -- Filtros de seguridad del módulo secundario`sda_stic_payment_commitments`.`id`IN (SELECT record_id FROM sda_def_security_group_records WHERE`group`='SDA_G1'AND`table`='sda_stic_payment_commitments')
OR`sda_stic_payment_commitments`.`assigned_user_name`IN (SELECT`assigned_user_name`FROM sda_stic_payment_commitments WHERE`assigned_user_name`='u1')
)
WHERE ( -- Filtros de seguridad del módulo principal`sda_contacts`.`id`IN (SELECT record_id FROM sda_def_security_group_records WHERE`group`='SDA_G1'AND`table`='sda_contacts')
OR`sda_contacts`.`assigned_user_name`IN (SELECT`assigned_user_name`FROM sda_contacts WHERE`assigned_user_name`='u1')
)
GROUP BY`sda_contacts`.`full_name`ORDER BY`Importe`DESC
The text was updated successfully, but these errors were encountered:
juanSTIC
changed the title
Hotfix - API - Seguridad aplicada a módulos relacionados limita la visibilidad de registros
Incidencia - API - Seguridad aplicada a módulos relacionados limita la visibilidad de registros
Sep 10, 2024
juanSTIC
changed the title
Incidencia - API - Seguridad aplicada a módulos relacionados limita la visibilidad de registros
Incidencia - EDA - SDA - Seguridad aplicada a módulos relacionados limita la visibilidad de registros
Sep 10, 2024
Descripción
En informes que utilizan LEFT JOIN para relacionar dos o más módulos, el sistema aplica incorrectamente los filtros de seguridad. Actualmente, las restricciones de acceso de los módulos secundarios están limitando la visibilidad de los registros del módulo principal. Como resultado, los usuarios no pueden ver todos los registros del módulo principal a los que deberían tener acceso, sino solo aquellos que también tienen registros relacionados y accesibles en los módulos secundarios. Este comportamiento compromete la integridad y utilidad de los informes multi-módulo para usuarios con permisos de acceso limitados.
Comportamiento actual vs. esperado
Actual
Esperado
Problema técnico
La consulta SQL actual aplica los filtros de seguridad de ambos módulos en la cláusula WHERE, lo que limita incorrectamente los resultados del LEFT JOIN.
Solución propuesta
Modificar la generación de consultas SQL para aplicar los filtros de seguridad de los módulos relacionados en la cláusula ON del LEFT JOIN, manteniendo solo los filtros del módulo principal en la cláusula WHERE.
Ejemplo de consulta corregida:
The text was updated successfully, but these errors were encountered: