Passed
Push — task/log-action-admin ( db7b87 )
by
unknown
07:12
created

LogAction::handle()   A

Complexity

Conditions 5
Paths 3

Size

Total Lines 19
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 19
rs 9.4888
c 1
b 0
f 0
cc 5
nc 3
nop 2
1
<?php
2
3
namespace App\Http\Middleware;
4
5
use Closure;
6
use Illuminate\Support\Facades\Auth;
7
use Illuminate\Support\Facades\Log;
8
9
class LogAction
10
{
11
12
    /**
13
     * Handle an incoming request.
14
     *
15
     * @param  \Illuminate\Http\Request  $request
16
     * @param  \Closure  $next
17
     * @return mixed
18
     */
19
    public function handle($request, Closure $next)
20
    {
21
        if (Auth::check() && Auth::user()->isAdmin() && $request->method() !== 'GET') {
22
            parse_str($request->getContent(), $body);
23
            $bodyKeys = [];
24
            foreach ($body as $key => $value) {
25
                array_push($bodyKeys, $key); // Only include keys from request body to avoid logging any sensitive values.
26
            }
27
            $logArray = [
28
                'message' => 'Admin non-GET request',
29
                'admin_user_id' => $request->user()->id,
30
                'url' => $request->url(),
31
                'verb' => $request->method(),
32
                'body' => $bodyKeys
33
            ];
34
            Log::info(json_encode($logArray));
35
            return $next($request);
36
        }
37
        return $next($request);
38
    }
39
}
40