Laravel Telescope adalah alat diagnostik luar biasa yang memberikan wawasan mendalam tentang aplikasi Anda. Namun, seringkali potensi kustomisasinya terlewatkan. Banyak pengembang hanya menggunakannya secara default, padahal Telescope menyimpan kemampuan adaptasi mendalam yang bisa disesuaikan dengan kebutuhan proyek spesifik Anda.

Kustomisasi Tingkat Lanjut via TelescopeServiceProvider

Jantung dari konfigurasi Telescope terletak pada TelescopeServiceProvider Anda, biasanya berlokasi di app/Providers/TelescopeServiceProvider.php. Di sinilah Anda dapat "memprogram" ulang bagaimana Telescope beroperasi dan mengimplementasikan fitur-fitur kustomisasi. Semua kustomisasi dasar ini umumnya dilakukan di dalam metode boot() pada service provider tersebut.

Memfilter Data yang Dikumpulkan

Anda tidak perlu merekam semua aktivitas. Dengan metode Telescope::filter(), Anda bisa menentukan kondisi spesifik untuk data yang ingin dicatat. Misalnya, hanya merekam request dari user tertentu, atau mengabaikan path tertentu. Ini sangat berguna untuk menjaga performa dan relevansi data log Anda.

Berikut adalah contoh bagaimana Anda dapat memfilter data yang dikumpulkan:

// app/Providers/TelescopeServiceProvider.php

use Laravel\Telescope\IncomingEntry;
use Laravel\Telescope\Telescope;
// ...

public function boot(): void
{
    parent::boot();

    Telescope::filter(function (IncomingEntry $entry) {
        // Di lingkungan lokal (local), rekam semua data untuk kemudahan debugging.
        if (app()->environment('local')) {
            return true;
        }

        // Abaikan request ke endpoint health check atau ke dashboard Telescope itu sendiri
        if ($entry->isRequest() && (
            str_starts_with($entry->content['uri'], '/api/health') ||
            str_starts_with($entry->content['uri'], '/telescope')
        )) {
            return false;
        }

        // Hanya rekam entri yang dianggap penting, seperti exception, failed jobs,
        // atau request yang berasal dari user yang sudah terautentikasi.
        return $entry->isReportableException() ||
               $entry->isFailedJob() ||
               ($entry->isRequest() && $entry->hasUser());
    });
}

Mengganti Middleware dan Autentikasi

Telescope menggunakan middleware untuk otentikasi. Anda bisa menggantinya dengan logika autentikasi kustom menggunakan Telescope::auth(). Ini memungkinkan integrasi yang lebih mulus dengan sistem otentikasi unik aplikasi Anda, atau membatasi akses ke dashboard Telescope hanya untuk peran pengguna tertentu.

Berikut contoh sederhana untuk mengkustomisasi autentikasi:

// app/Providers/TelescopeServiceProvider.php

use Illuminate\Support\Facades\Gate;
use Laravel\Telescope\Telescope;
// ...

public function boot(): void
{
    parent::boot();

    Telescope::auth(function ($request) {
        // Izinkan akses ke dashboard Telescope hanya untuk user dengan email tertentu.
        // Ini cocok untuk tim developer atau administrator.
        // Untuk logika yang lebih kompleks dan terstruktur, Anda bisa menggunakan Laravel Gate.
        return $request->user() &&
               in_array($request->user()->email, [
                   'admin@example.com',
                   'dev@example.com',
               ]);

        // Contoh penggunaan Gate (jika didefinisikan di AuthServiceProvider Anda):
        // return Gate::check('viewTelescope');
    });
}

Ini hanyalah permulaan dari apa yang bisa Anda lakukan dengan Telescope. Dengan beberapa baris kode di TelescopeServiceProvider, Anda sudah bisa mengontrol data yang dikumpulkan dan siapa yang dapat mengakses dashboard-nya. Di seri selanjutnya, kita akan menyelami lebih dalam fitur-fitur tersembunyi lainnya dan membawa pengalaman monitoring Anda ke level berikutnya.