From 31b79a5a62e3bb383ed136ddb2ae4bfe43aa2a57 Mon Sep 17 00:00:00 2001
From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:18:12 -0500
Subject: [PATCH] feat: rol lab_readonly con acceso exclusivo a ordenes y
domicilios (solo lectura)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- lab_domicilios.php: sidebar filtrado por hasModule()
- lab_ordenes.php: sidebar filtrado por hasModule()
- login.php: redirige a lab_domicilios.php si módulos son [lab_domicilios, lab_ordenes]
- migration: elimina lab_dashboard y lab_pacientes del rol lab_readonly
- DB producción: rol lab_readonly queda con lab_domicilios(read) + lab_ordenes(read)
---
lab_domicilios.php | 18 ++++++++++++++++++
lab_ordenes.php | 18 ++++++++++++++++++
login.php | 4 ++++
...02_lab_readonly_only_ordenes_domicilios.sql | 5 +++++
4 files changed, 45 insertions(+)
create mode 100644 migrations/20260402_lab_readonly_only_ordenes_domicilios.sql
diff --git a/lab_domicilios.php b/lab_domicilios.php
index d0ea469..6883137 100644
--- a/lab_domicilios.php
+++ b/lab_domicilios.php
@@ -39,17 +39,35 @@ $domIdParam = (int)($_GET['id'] ?? 0);
diff --git a/lab_ordenes.php b/lab_ordenes.php
index 101da21..f578f82 100644
--- a/lab_ordenes.php
+++ b/lab_ordenes.php
@@ -39,17 +39,35 @@ $estadoParam = $_GET['estado'] ?? '';
diff --git a/login.php b/login.php
index 31acec8..cdfca29 100644
--- a/login.php
+++ b/login.php
@@ -61,6 +61,10 @@ if ($_POST && !$loginBlocked) {
header('Location: enfermero_portal.php');
} elseif (count($modules) === 1 && $modules[0] === 'lab_formularios') {
header('Location: lab_formularios.php');
+ } elseif (count($modules) === 2
+ && in_array('lab_domicilios', $modules, true)
+ && in_array('lab_ordenes', $modules, true)) {
+ header('Location: lab_domicilios.php');
} else {
header('Location: index.php');
}
diff --git a/migrations/20260402_lab_readonly_only_ordenes_domicilios.sql b/migrations/20260402_lab_readonly_only_ordenes_domicilios.sql
new file mode 100644
index 0000000..e3b8100
--- /dev/null
+++ b/migrations/20260402_lab_readonly_only_ordenes_domicilios.sql
@@ -0,0 +1,5 @@
+-- Rol lab_readonly: dejar solo lab_domicilios y lab_ordenes (ambos con permiso read)
+-- Eliminar módulos que no corresponden a este rol
+DELETE FROM role_modules
+WHERE role_id = (SELECT id FROM roles WHERE slug = 'lab_readonly')
+ AND module_slug IN ('lab_dashboard', 'lab_pacientes');