Files
backend/app/Http/Middleware/AuthenticateSupervisor.php
T
2026-06-28 12:29:53 +02:00

48 lines
1.3 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\Supervisor;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Sanctum\PersonalAccessToken;
use Symfony\Component\HttpFoundation\Response;
class AuthenticateSupervisor
{
public function handle(Request $request, Closure $next): Response
{
if ($request->bearerToken() !== null) {
$token = PersonalAccessToken::findToken($request->bearerToken());
if ($token !== null
&& $token->tokenable instanceof Supervisor
&& $token->can('supervisor')
&& $token->tokenable->is_active
) {
Auth::guard('supervisor')->setUser($token->tokenable);
$request->setUserResolver(fn () => $token->tokenable);
return $next($request);
}
return response()->json([
'message' => 'Token superviseur invalide.',
], 401);
}
if (Auth::guard('supervisor')->check()) {
$supervisor = Auth::guard('supervisor')->user();
if ($supervisor instanceof Supervisor && $supervisor->is_active) {
return $next($request);
}
}
return response()->json([
'message' => 'Superviseur non authentifié.',
], 401);
}
}