Rol nuevo para consultar turnos y tiempos de atención, de solo lectura y con acceso únicamente a dashboard e historial. Se le permite exportar el historial, que es la forma de analizar tiempos fuera del sistema. Al crearlo salió que las vistas del turnero no verificaban nada por su cuenta: el control del ERP es por módulo, así que cualquiera con acceso al turnero podía abrir Configuración —lugares, dispositivos, plantillas— escribiendo la URL, aunque el menú no se la mostrara. Aplicaba a todos los roles, no solo al nuevo. Se agrega _acceso.php con una verificación de rol que usan las tres pantallas que operan sobre la atención o cambian configuración. Verificado que cada rol conserva lo que ya usaba: recepcionista entra a recepción, bacteriólogo a las estaciones, supervisor y administradores a todo. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
1.2 KiB
PHP
33 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* modules/turnero/_acceso.php
|
|
* Restricción por rol dentro del módulo Turnero.
|
|
*
|
|
* El control de acceso del ERP es por módulo: quien tiene `turnero` puede abrir
|
|
* cualquiera de sus vistas escribiendo la URL, aunque el menú no se la muestre.
|
|
* Para las pantallas que operan sobre la atención o cambian configuración eso no
|
|
* alcanza, así que exigen además un rol.
|
|
*
|
|
* Uso, al inicio de la vista:
|
|
* require_once __DIR__ . '/../_acceso.php';
|
|
* turneroExigirRol(['admin', 'superadmin', 'supervisor']);
|
|
*/
|
|
|
|
if (!function_exists('turneroExigirRol')) {
|
|
/**
|
|
* Corta la ejecución si el rol de la sesión no está entre los permitidos.
|
|
* Los administradores pasan siempre.
|
|
*/
|
|
function turneroExigirRol(array $permitidos): void
|
|
{
|
|
$rol = $_SESSION['admin_user']['role'] ?? '';
|
|
if (in_array($rol, ['admin', 'superadmin'], true)) return;
|
|
if (in_array($rol, $permitidos, true)) return;
|
|
|
|
// Devolver a una pantalla que sí pueda ver, en vez de un error seco
|
|
$destino = defined('BASE_URL') ? BASE_URL : '/';
|
|
header('Location: ' . $destino . 'erp.php?m=turnero&v=dashboard&sin_acceso=1');
|
|
exit;
|
|
}
|
|
}
|