LogDebugVisits::handle()   B
last analyzed

Complexity

Conditions 7
Paths 4

Size

Total Lines 27
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 7

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 12
c 3
b 0
f 0
dl 0
loc 27
rs 8.8333
ccs 13
cts 13
cp 1
cc 7
nc 4
nop 2
crap 7
1
<?php
2
3
namespace App\Http\Middleware;
4
5
use Closure;
6
7
use Illuminate\Support\Arr;
8
use Illuminate\Http\Request;
9
10
use Illuminate\Support\Facades\Log;
11
use Illuminate\Support\Facades\Auth;
12
use Illuminate\Support\Facades\Route;
13
14
class LogDebugVisits
15
{
16
    //  These items should never be logged
17
    protected $ignore = ['_token', 'token'];
18
    //  These items are logged with masked input to show that they did exist during the session
19
    protected $redact = ['password', 'password_confirmation'];
20
21
22
    /**
23 700
\     * When Debug Logging is one, log every page visit and all $request data
24
     */
25 700
    public function handle(Request $request, Closure $next)
26
    {
27 700
        $user = isset(Auth::user()->user_id) ? Auth::user()->full_name : \Request::ip();
28 700
        $requestData = $request->request->all();
29
30 700
        Log::debug('Route '.Route::currentRouteName().' visited by '.$user);
31
32 700
        if(!empty($requestData))
33
        {
34 328
            foreach($this->redact as $i)
35
            {
36 328
                if(Arr::exists($requestData, $i))
37
                {
38 44
                    $requestData[$i] = '[REDACTED]';
39
                }
40
            }
41 328
            foreach($this->ignore as $i)
42
            {
43 328
                if(Arr::exists($requestData, $i))
44
                {
45 8
                    unset($requestData[$i]);
46
                }
47
            }
48 328
            Log::debug('Submitted Data ', $requestData);
49
        }
50
51 700
        return $next($request);
52
    }
53
}
54