feat: rol lab_readonly con acceso exclusivo a ordenes y domicilios (solo lectura)

- 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)
This commit is contained in:
Lizandro Guarnizo
2026-04-02 11:18:12 -05:00
parent 3516f6e229
commit 31b79a5a62
4 changed files with 45 additions and 0 deletions
+18
View File
@@ -39,17 +39,35 @@ $domIdParam = (int)($_GET['id'] ?? 0);
<nav class="sidebar">
<div class="sidebar-header"><h4><i class="fas fa-flask"></i> Módulo Lab</h4></div>
<ul class="sidebar-menu">
<?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; ?>
<li><a href="lab_domicilios.php" class="nav-link active"><i class="fas fa-house-medical"></i> Domicilios</a></li>
<?php if (hasModule('lab_enfermeras')): ?>
<li><a href="lab_enfermeras.php" class="nav-link"><i class="fas fa-user-nurse"></i> Enfermeros</a></li>
<?php endif; ?>
<?php if (hasModule('lab_formularios')): ?>
<li><a href="lab_formularios.php" class="nav-link"><i class="fas fa-wpforms"></i> Formularios</a></li>
<?php endif; ?>
<?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; ?>
<li class="sidebar-divider"></li>
<?php if (hasModule('lab_dashboard')): ?>
<li><a href="index.php" class="nav-link"><i class="fas fa-arrow-left"></i> Volver al Bot</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>
+18
View File
@@ -39,17 +39,35 @@ $estadoParam = $_GET['estado'] ?? '';
<nav class="sidebar">
<div class="sidebar-header"><h4><i class="fas fa-flask"></i> Módulo Lab</h4></div>
<ul class="sidebar-menu">
<?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; ?>
<li><a href="lab_ordenes.php" class="nav-link active"><i class="fas fa-file-medical"></i> Órdenes</a></li>
<?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; ?>
<?php if (hasModule('lab_formularios')): ?>
<li><a href="lab_formularios.php" class="nav-link"><i class="fas fa-wpforms"></i> Formularios</a></li>
<?php endif; ?>
<?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; ?>
<li class="sidebar-divider"></li>
<?php if (hasModule('lab_dashboard')): ?>
<li><a href="index.php" class="nav-link"><i class="fas fa-arrow-left"></i> Volver al Bot</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>
+4
View File
@@ -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');
}
@@ -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');