From d726319b0af808a92a1f9c51123335cf53f4f5e3 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 2 Apr 2026 10:43:56 -0500 Subject: [PATCH] feat: rol formularios_readonly con acceso exclusivo a lab_formularios MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - login.php: redirige a lab_formularios.php si el único módulo es lab_formularios - lab_formularios.php: sidebar filtra links por hasModule() según el rol - migration: permiso write en lab_formularios para formularios_readonly - DB: eliminado lab_dashboard de formularios_readonly (solo lectura de resultados) --- lab_formularios.php | 18 ++++++++++++++++++ login.php | 6 +++++- .../20260402_formularios_readonly_write.sql | 11 +++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 migrations/20260402_formularios_readonly_write.sql diff --git a/lab_formularios.php b/lab_formularios.php index 38ad7ac..bfe0e71 100644 --- a/lab_formularios.php +++ b/lab_formularios.php @@ -42,21 +42,39 @@ $puedeEscribir = $esAdmin && hasModuleWrite('lab_formularios'); diff --git a/login.php b/login.php index e80d051..31acec8 100644 --- a/login.php +++ b/login.php @@ -55,8 +55,12 @@ if ($_POST && !$loginBlocked) { $_SESSION['login_time'] = time(); // Redirigir según el rol - if (($adminUser['role'] ?? 'admin') === 'enfermero') { + $roleSlug = $adminUser['role'] ?? 'admin'; + $modules = $adminUser['modules'] ?? []; + if ($roleSlug === 'enfermero') { header('Location: enfermero_portal.php'); + } elseif (count($modules) === 1 && $modules[0] === 'lab_formularios') { + header('Location: lab_formularios.php'); } else { header('Location: index.php'); } diff --git a/migrations/20260402_formularios_readonly_write.sql b/migrations/20260402_formularios_readonly_write.sql new file mode 100644 index 0000000..3d68ead --- /dev/null +++ b/migrations/20260402_formularios_readonly_write.sql @@ -0,0 +1,11 @@ +-- Rol formularios_readonly: solo acceso a lab_formularios con permiso write +-- Permite crear y editar formularios; los envíos/resultados son solo lectura (UI) +UPDATE role_modules +SET permission = 'write' +WHERE role_id = (SELECT id FROM roles WHERE slug = 'formularios_readonly') + AND module_slug = 'lab_formularios'; + +-- Eliminar acceso a lab_dashboard que no corresponde a este rol +DELETE FROM role_modules +WHERE role_id = (SELECT id FROM roles WHERE slug = 'formularios_readonly') + AND module_slug = 'lab_dashboard';