|
- <?php
-
- namespace App\Http\Middleware;
-
- use App\Codes\UserRole;
- use App\Sessions\SessionUser;
- use Closure;
- use Illuminate\Http\Request;
- use Symfony\Component\HttpFoundation\Response;
-
- class RoleMiddleware
- {
-
- public function __construct(private SessionUser $sessionUser)
- {
- $sessionUser->init();
- }
- /**
- * Handle an incoming request.
- *
- * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
- */
- public function handle(Request $request, Closure $next, string $rolesStr): Response
- {
- $allowRoles = [];
-
- foreach (explode("-", $rolesStr) as $roleSrt) {
- $role = UserRole::from($roleSrt);
- $allowRoles[] = $role;
- }
-
- $currentRole = $this->sessionUser->user()->role;
-
- if (in_array($currentRole, $allowRoles, true) === false) {
- $path = $request->path();
- abort(403);
- }
-
- return $next($request);
- }
- }
|