Projects/3BIT/winter-semester/IIS/xnecasr00/app/Http/Middleware/EnsureUserHasRole.php
2026-04-14 19:28:46 +02:00

37 lines
967 B
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Enums\UserRole;
class EnsureUserHasRole
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
* @param string ...$roles
*/
public function handle(Request $request, Closure $next, string ...$roles): Response
{
if (!$request->user()) {
abort(403, 'Unauthorized action.');
}
$userRole = $request->user()->role;
// Convert string roles to UserRole enum cases for comparison
$allowedRoles = array_map(function ($role) {
return UserRole::from($role);
}, $roles);
if (!in_array($userRole, $allowedRoles)) {
abort(403, 'You do not have permission to access this page.');
}
return $next($request);
}
}