Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
52.17% covered (warning)
52.17%
12 / 23
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
LogRequest
52.17% covered (warning)
52.17%
12 / 23
0.00% covered (danger)
0.00%
0 / 1
7.73
0.00% covered (danger)
0.00%
0 / 1
 handle
52.17% covered (warning)
52.17%
12 / 23
0.00% covered (danger)
0.00%
0 / 1
7.73
1<?php
2
3namespace App\Http\Middleware;
4
5use Closure;
6use Illuminate\Http\Request;
7use Illuminate\Support\Facades\Log;
8use Symfony\Component\HttpFoundation\Response;
9
10class LogRequest
11{
12    public function handle(Request $request, Closure $next): Response
13    {
14        $method = $request->method();
15        $url = $request->url();
16        $headers = $request->headers->all();
17        $params = $request->all();
18
19        if ($method != 'GET') {
20            $headers = json_encode($request->headers->all());
21            $params = json_encode($request->all());
22        }
23
24        // verify if jwt token is expired
25        if ($request->header('Authorization')) {
26            $token = $request->header('Authorization');
27            $token = explode('.', $token);
28            if (count($token) > 1) {
29                $token = $token[1];
30                $token = json_decode(base64_decode($token));
31                $token = $token->exp;
32                $token = date('Y-m-d H:i:s', $token);
33                $now = date('Y-m-d H:i:s');
34                if ($now > $token) {
35                    Log::info('HTTP Request: ' . $method . ' ' . $url, [
36                        'headers' => $headers,
37                        'params' => $params,
38                        'user' => $request->user()
39                    ]);
40                }
41            }
42        }
43
44        return $next($request);
45    }
46}