CheckForAnyScope::handle()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 5
c 1
b 0
f 0
nc 3
nop 3
dl 0
loc 11
rs 10
1
<?php
2
3
namespace Modules\Core\Http\Middleware;
4
5
use Closure;
6
use Illuminate\Http\Request;
7
use Illuminate\Support\Arr;
8
use Modules\Core\Supports\Response;
9
use Tymon\JWTAuth\Facades\JWTAuth;
10
11
class CheckForAnyScope
12
{
13
    /**
14
     * Handle an incoming request.
15
     *
16
     * @param \Illuminate\Http\Request $request
17
     * @param \Closure                 $next
18
     * @param array                    $scopes
19
     *
20
     * @return mixed
21
     */
22
    public function handle(Request $request, Closure $next, ...$scopes)
23
    {
24
        $canScopes = data_get(JWTAuth::user()->getJWTCustomClaims(), 'scopes');
25
26
        foreach ($scopes as $scope) {
27
            if (Arr::has($canScopes, $scope)) {
28
                return $next($request);
29
            }
30
        }
31
32
        return Response::handleForbidden();
33
    }
34
}
35