Files
saqel/backend/app/Http/Middleware/ApiTokenAuth.php
T

33 lines
780 B
PHP

<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response;
class ApiTokenAuth
{
public function handle(Request $request, Closure $next): Response
{
$token = $request->bearerToken();
if ($token === null || Str::length($token) < 32) {
return response()->json(['message' => 'Unauthenticated.'], 401);
}
/** @var User|null $user */
$user = User::query()->where('api_token', $token)->first();
if ($user === null) {
return response()->json(['message' => 'Unauthenticated.'], 401);
}
$request->setUserResolver(fn () => $user);
return $next($request);
}
}