para que el JS tenga rol, lista de abogados, lista de * usuarios involucrables, etc. sin hacer un fetch extra al cargar. */ final class Bootstrap { public static function inject(string $viewPath): void { $user = Auth::user(); $payload = [ 'me' => $user['email'], 'name' => $user['name'], 'role' => Auth::role(), 'isAdmin' => Auth::isAdmin(), 'isSocio' => Auth::isSocio(), 'isAbogado' => Auth::isAbogado(), 'canCreate' => Auth::canCreate(), 'canDelete' => Auth::canDelete(), 'abogados' => Lookups::abogadoNames(), 'users' => Lookups::involucrablesUsers(), ]; $json = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP); $inject = ''; $html = file_get_contents($viewPath); if ($html === false) { http_response_code(500); exit('Vista no disponible.'); } // Inyectar SOLO antes de la primera ocurrencia de . str_replace // remplazaba todas — incluyendo las que viven dentro de template // literals de JS (ej. en exportPDF), lo cual metía un // espurio que cortaba el