fix: permitir crear/editar formularios a roles con permiso write en lab_formularios
- _helpers.php: nueva función requireModuleWrite() que verifica session module_permissions
- save_formulario.php: reemplaza requireAdmin() por requireModuleWrite('lab_formularios')
This commit is contained in:
@@ -73,6 +73,30 @@ function requireAdmin(): void {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Detiene la ejecución con 403 JSON si el usuario no tiene permiso 'write' sobre el módulo dado.
|
||||
* Los admins sin role_id tienen acceso total (retrocompat.).
|
||||
*/
|
||||
function requireModuleWrite(string $moduleSlug): void {
|
||||
$role = userRole();
|
||||
$modules = $_SESSION['admin_user']['modules'] ?? null;
|
||||
|
||||
// Enfermero nunca tiene write en módulos de diseño
|
||||
if ($role === 'enfermero') {
|
||||
jsonError('Solo permiteo a administradores', 403);
|
||||
}
|
||||
|
||||
// Admin sin modules cargados = acceso total (sistema legacy)
|
||||
if ($modules === null || ($role === 'admin' && empty($_SESSION['admin_user']['role_id']))) {
|
||||
return;
|
||||
}
|
||||
|
||||
$perms = $_SESSION['admin_user']['module_permissions'] ?? [];
|
||||
if (($perms[$moduleSlug] ?? '') !== 'write') {
|
||||
jsonError('No tienes permiso de escritura en este módulo', 403);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Detiene la ejecución si no se puede actuar como enfermero.
|
||||
* Acepta tanto admins (que pueden actuar en nombre de cualquier enfermera)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireMethod('POST');
|
||||
requireAdmin(); // enfermeros NO pueden diseñar formularios
|
||||
requireModuleWrite('lab_formularios'); // admins y roles con permiso write pueden crear/editar
|
||||
|
||||
try {
|
||||
$datos = inputJson();
|
||||
|
||||
Reference in New Issue
Block a user