arcos-backend/app/Providers/TelescopeServiceProvider.php
2025-06-01 12:32:11 -06:00

72 lines
1.9 KiB
PHP

<?php namespace App\Providers;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use App\Models\User;
use Illuminate\Support\Facades\Gate;
use Laravel\Telescope\IncomingEntry;
use Laravel\Telescope\Telescope;
use Laravel\Telescope\TelescopeApplicationServiceProvider;
/**
* Proveedor de servicios de Telescope
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @version 1.0.0
*/
class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
{
/**
* Registrar cualquier servicio de la aplicación
*/
public function register(): void
{
Telescope::night();
$this->hideSensitiveRequestDetails();
$isLocal = $this->app->environment('local');
Telescope::filter(function (IncomingEntry $entry) use ($isLocal) {
return $isLocal ||
$entry->isReportableException() ||
$entry->isFailedRequest() ||
$entry->isFailedJob() ||
$entry->isScheduledTask() ||
$entry->hasMonitoredTag();
});
}
/**
* Prevenir que los detalles de las solicitudes sensibles se registren en Telescope.
*/
protected function hideSensitiveRequestDetails(): void
{
if ($this->app->environment('local')) {
return;
}
Telescope::hideRequestParameters(['_token']);
Telescope::hideRequestHeaders([
'cookie',
'x-csrf-token',
'x-xsrf-token',
]);
}
/**
* Registrar la puerta de acceso de Telescope.
*
* Esta puerta determina quién puede acceder a Telescope en entornos no locales.
*/
protected function gate(): void
{
Gate::define('viewTelescope', function (User $user) {
return $user->hasRole('developer');
});
}
}