Completed
Pull Request — master (#1038)
by Helmut
01:31
created

RoleOrPermissionMiddleware::handle()   B

Complexity

Conditions 6
Paths 10

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 10
nop 4
dl 0
loc 20
rs 8.9777
c 0
b 0
f 0
1
<?php
2
3
namespace Spatie\Permission\Middlewares;
4
5
use Closure;
6
use Illuminate\Support\Facades\Auth;
7
use Spatie\Permission\Exceptions\UnauthorizedException;
8
9
class RoleOrPermissionMiddleware
10
{
11
    public function handle($request, Closure $next, $roleOrPermission, $guard = null)
12
    {
13
        if (is_null($guard)) {
14
            $guard = (require config_path('auth.php'))['defaults']['guard'];
15
        }
16
17
        if (Auth::guard($guard)->guest()) {
18
            throw UnauthorizedException::notLoggedIn();
19
        }
20
21
        $rolesOrPermissions = is_array($roleOrPermission)
22
            ? $roleOrPermission
23
            : explode('|', $roleOrPermission);
24
25
        if (! Auth::guard($guard)->user()->hasAnyRole($rolesOrPermissions) && ! Auth::guard($guard)->user()->hasAnyPermission($rolesOrPermissions)) {
26
            throw UnauthorizedException::forRolesOrPermissions($rolesOrPermissions);
27
        }
28
29
        return $next($request);
30
    }
31
}
32