@ -4,19 +4,43 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Request;
use Firebase\JWT\JWT;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use App\Constants\HttpStatus;
/**
* Controlador de autenticación para generar y gestionar tokens JWT.
*
* Este controlador maneja las peticiones de autenticación, verificando una
* clave secreta proporcionada y generando un token JWT con un tiempo de
* expiración. El token puede ser utilizado para autorizar solicitudes futuras.
*
* Métodos disponibles:
* - login: Valida la clave secreta y genera un token JWT.
*
* @package App\Http\Controllers
*/
class AuthController extends Controller
class AuthController extends Controller
{
{
/**
* Método para autenticar la petición y generar un token JWT.
*
* Este método valida si se ha proporcionado la clave secreta, verifica su
* validez comparándola con la configurada en el archivo .env y genera un
* token JWT con un tiempo de expiración de 15 minutos. Devuelve el token
* y la información de expiración en formato JSON.
*
* @param Request $request La solicitud HTTP que contiene la clave secreta.
* @return \Illuminate\Http\JsonResponse Respuesta JSON con el token JWT o mensajes de error.
*/
public function login(Request $request)
public function login(Request $request)
{
{
$request->validate([
if(!$request->has('clave_secreta')){
'clave_secreta' => 'required',
return response()->json(['message' => trans('api.SIN_CLAVE')], HttpStatus::BAD_REQUEST);
]);
}
// Verificar la clave secreta
// Verificar la clave secreta
if ($request->clave_secreta !== config('app.clave')) {
if ($request->clave_secreta !== config('app.clave')) {
return response()->json(['message' => 'Credenciales inválidas'], 401);
return response()->json(['message' => trans('api.CLAVE_INCORRECTA')], HttpStatus::UNAUTHORIZED );
}
}
$expirationTime = time() + (15 * 60); // 15 minuto
$expirationTime = time() + (15 * 60); // 15 minuto
@ -34,8 +58,8 @@ class AuthController extends Controller
return response()->json([
return response()->json([
'token' => $jwt,
'token' => $jwt,
'expires_in ' => $expirationTime - time(), // Tiempo en segundos hasta la expiración
'expiracion_s egundo s' => $expirationTime - time(), // Tiempo en segundos hasta la expiración
'expiration_time ' => date('Y-m-d H:i:s', $expirationTime) // Fecha y hora de expiración
'tiempo_expiracion ' => date('Y-m-d H:i:s', $expirationTime) // Fecha y hora de expiración
]);
]);
}
}
}
}