Completed
Push — master ( 739835...9cb3a5 )
by Mahmoud
03:59
created

VisitorsAuthentication::handle()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 18
rs 9.4285
cc 3
eloc 8
nc 3
nop 2
1
<?php
2
3
namespace App\Containers\Authentication\Middlewares;
4
5
use App\Containers\Authentication\Exceptions\MissingVisitorIdException;
6
use App\Containers\User\Tasks\FindUserByVisitorIdTask;
7
use Closure;
8
use Illuminate\Http\Request;
9
10
/**
11
 * Class VisitorsAuthentication
12
 *
13
 * @author  Mahmoud Zalt  <[email protected]>
14
 */
15
class VisitorsAuthentication
16
{
17
18
    /**
19
     * @var  \App\Containers\User\Tasks\FindUserByVisitorIdTask
20
     */
21
    private $findUserByVisitorIdTask;
22
23
    /**
24
     * VisitorsAuthentication constructor.
25
     *
26
     * @param \App\Containers\User\Tasks\FindUserByVisitorIdTask $findUserByVisitorIdTask
27
     */
28
    public function __construct(
29
        FindUserByVisitorIdTask $findUserByVisitorIdTask
30
    ) {
31
        $this->findUserByVisitorIdTask = $findUserByVisitorIdTask;
32
    }
33
34
    /**
35
     * @param  \Illuminate\Http\Request $request
36
     * @param  \Closure                 $next
37
     *
38
     * @return mixed
39
     */
40
    public function handle(Request $request, Closure $next)
41
    {
42
        // read the visitor ID header (set by the API users)
43
        $visitorId = $request->header('visitor-id');
44
45
        if (!$visitorId) {
46
            throw new MissingVisitorIdException();
47
        }
48
49
        $user = $this->findUserByVisitorIdTask->run($visitorId);
50
51
        if (!$user) {
52
            abort(403);
53
        }
54
55
        // return the response
56
        return $next($request);
57
    }
58
}
59