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';