MagiclinkMiddleware::handle()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 23
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 1 Features 1
Metric Value
eloc 11
c 3
b 1
f 1
dl 0
loc 23
rs 9.6111
cc 5
nc 4
nop 2
1
<?php
2
3
namespace MagicLink\Middlewares;
4
5
use Closure;
6
use Illuminate\Http\Request;
7
use MagicLink\MagicLink;
8
use MagicLink\Responses\Response;
9
10
class MagiclinkMiddleware
11
{
12
    public function handle(Request $request, Closure $next)
13
    {
14
        $token = (string) $request->route('token');
15
16
        $magicLink = MagicLink::getValidMagicLinkByToken($token);
17
18
        if ($request->method() === 'HEAD') {
19
            return response()->noContent($magicLink ? 200 : 404);
20
        }
21
22
        if (! $magicLink) {
23
            return $this->badResponse();
24
        }
25
26
        $responseAccessCode = $magicLink->getResponseAccessCode();
27
28
        if ($responseAccessCode) {
29
            return $responseAccessCode;
30
        }
31
32
        $magicLink->visited();
33
34
        return $next($request);
35
    }
36
37
    protected function badResponse()
38
    {
39
        $responseClass = config('magiclink.invalid_response.class', Response::class);
40
41
        $response = new $responseClass();
42
43
        return $response(config('magiclink.invalid_response.options', []));
44
    }
45
}
46