feat: rol formularios_readonly con acceso exclusivo a lab_formularios

- 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)
This commit is contained in:
Lizandro Guarnizo
2026-04-02 10:43:56 -05:00
parent 59e8bbbdcf
commit d726319b0a
3 changed files with 34 additions and 1 deletions
+18
View File
@@ -42,21 +42,39 @@ $puedeEscribir = $esAdmin && hasModuleWrite('lab_formularios');
<div class="sidebar-header"><h4><i class="fas fa-flask"></i> Módulo Lab</h4></div>
<ul class="sidebar-menu">
<?php if ($esAdmin): ?>
<?php if (hasModule('lab_dashboard')): ?>
<li><a href="lab_dashboard.php" class="nav-link"><i class="fas fa-tachometer-alt"></i> Dashboard</a></li>
<?php endif; ?>
<?php if (hasModule('lab_ordenes')): ?>
<li><a href="lab_ordenes.php" class="nav-link"><i class="fas fa-file-medical"></i> Órdenes</a></li>
<?php endif; ?>
<?php if (hasModule('lab_pacientes')): ?>
<li><a href="lab_pacientes.php" class="nav-link"><i class="fas fa-users"></i> Pacientes</a></li>
<?php endif; ?>
<?php if (hasModule('lab_domicilios')): ?>
<li><a href="lab_domicilios.php" class="nav-link"><i class="fas fa-house-medical"></i> Domicilios</a></li>
<?php endif; ?>
<?php if (hasModule('lab_enfermeras')): ?>
<li><a href="lab_enfermeras.php" class="nav-link"><i class="fas fa-user-nurse"></i> Enfermeras</a></li>
<?php endif; ?>
<li><a href="lab_formularios.php" class="nav-link active"><i class="fas fa-wpforms"></i> Formularios</a></li>
<?php if (hasModule('lab_reportes')): ?>
<li><a href="lab_reportes.php" class="nav-link"><i class="fas fa-chart-bar"></i> Reportes</a></li>
<?php endif; ?>
<?php if (hasModule('lab_configuracion')): ?>
<li><a href="lab_configuracion.php" class="nav-link"><i class="fas fa-sliders-h"></i> Configuración</a></li>
<?php endif; ?>
<?php if (hasModule('lab_usuarios')): ?>
<li><a href="lab_usuarios.php" class="nav-link"><i class="fas fa-users-cog"></i> Usuarios</a></li>
<?php endif; ?>
<?php else: ?>
<li><a href="enfermero_portal.php" class="nav-link"><i class="fas fa-calendar-day"></i> Mi Agenda</a></li>
<li><a href="lab_formularios.php" class="nav-link active"><i class="fas fa-wpforms"></i> Formularios</a></li>
<?php endif; ?>
<li class="sidebar-divider"></li>
<?php if (!$esAdmin || hasModule('lab_dashboard')): ?>
<li><a href="<?= $esAdmin ? 'index.php' : 'enfermero_portal.php' ?>" class="nav-link"><i class="fas fa-arrow-left"></i> Volver</a></li>
<?php endif; ?>
<li><a href="logout.php" class="nav-link logout-link" onclick="return confirm('¿Cerrar sesión?')"><i class="fas fa-sign-out-alt"></i> Cerrar Sesión</a></li>
</ul>
</nav>
+5 -1
View File
@@ -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');
}
@@ -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';