TelescopeServiceProvider   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 20
dl 0
loc 59
ccs 0
cts 23
cp 0
rs 10
c 1
b 0
f 0
wmc 9

3 Methods

Rating   Name   Duplication   Size   Complexity  
A hideSensitiveRequestDetails() 0 12 2
A register() 0 16 6
A gate() 0 6 1
1
<?php
2
3
namespace App\Providers;
4
5
use Illuminate\Support\Facades\Gate;
6
use Laravel\Telescope\IncomingEntry;
7
use Laravel\Telescope\Telescope;
8
use Laravel\Telescope\TelescopeApplicationServiceProvider;
9
10
class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
11
{
12
    /**
13
     * Register any application services.
14
     *
15
     * @return void
16
     */
17
    public function register()
18
    {
19
        // Telescope::night();
20
21
        $this->hideSensitiveRequestDetails();
22
23
        Telescope::filter(function (IncomingEntry $entry) {
24
            if ($this->app->environment('local')) {
25
                return true;
26
            }
27
28
            return $entry->isReportableException() ||
29
                   $entry->isFailedRequest() ||
30
                   $entry->isFailedJob() ||
31
                   $entry->isScheduledTask() ||
32
                   $entry->hasMonitoredTag();
33
        });
34
    }
35
36
    /**
37
     * Prevent sensitive request details from being logged by Telescope.
38
     *
39
     * @return void
40
     */
41
    protected function hideSensitiveRequestDetails()
42
    {
43
        if ($this->app->environment('local')) {
44
            return;
45
        }
46
47
        Telescope::hideRequestParameters(['_token']);
48
49
        Telescope::hideRequestHeaders([
50
            'cookie',
51
            'x-csrf-token',
52
            'x-xsrf-token',
53
        ]);
54
    }
55
56
    /**
57
     * Register the Telescope gate.
58
     *
59
     * This gate determines who can access Telescope in non-local environments.
60
     *
61
     * @return void
62
     */
63
    protected function gate()
64
    {
65
        Gate::define('viewTelescope', function ($user) {
66
            $mails = explode(',', config('telescope.mail_addresses'));
67
68
            return in_array($user->email, $mails ?? []);
69
        });
70
    }
71
}
72