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.
|
* Detiene la ejecución si no se puede actuar como enfermero.
|
||||||
* Acepta tanto admins (que pueden actuar en nombre de cualquier enfermera)
|
* Acepta tanto admins (que pueden actuar en nombre de cualquier enfermera)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
require_once __DIR__ . '/_helpers.php';
|
require_once __DIR__ . '/_helpers.php';
|
||||||
requireMethod('POST');
|
requireMethod('POST');
|
||||||
requireAdmin(); // enfermeros NO pueden diseñar formularios
|
requireModuleWrite('lab_formularios'); // admins y roles con permiso write pueden crear/editar
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$datos = inputJson();
|
$datos = inputJson();
|
||||||
|
|||||||
Reference in New Issue
Block a user