vueloenglobo.mx/app/Http/Middleware/VerifyBearerToken.php

56 lines
1.2 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class VerifyBearerToken
{
public function handle(Request $request, Closure $next): Response
{
/**
* Obtener token desde header:
* Authorization: Bearer TOKEN
*/
$token = $request->bearerToken();
/**
* Token esperado desde .env
*/
$expectedToken = env('API_BEARER_TOKEN');
/**
* Validación básica de existencia
*/
if (!$expectedToken) {
return response()->json([
'error' => 'API token no configurado en .env'
], 500);
}
/**
* Validación de token faltante
*/
if (!$token) {
return response()->json([
'error' => 'Token no enviado'
], 401);
}
/**
* Comparación segura
*/
if (!hash_equals($expectedToken, $token)) {
return response()->json([
'error' => 'No autorizado'
], 401);
}
/**
* Continuar request
*/
return $next($request);
}
}