Browse Source

Se modifica la forma de validar el campo clave_secreta en el controlador de Authenticacion ademas se mejora el codigo con mensajes lang, codigo http con clave de constantes y docstrings

main
jirho 1 year ago
parent
commit
8e41fc4251
  1. 38
      app/Http/Controllers/AuthController.php

38
app/Http/Controllers/AuthController.php

@ -4,19 +4,43 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
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
{
/**
* 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)
{
$request->validate([
'clave_secreta' => 'required',
]);
if(!$request->has('clave_secreta')){
return response()->json(['message' => trans('api.SIN_CLAVE')], HttpStatus::BAD_REQUEST);
}
// Verificar la clave secreta
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
@ -34,8 +58,8 @@ class AuthController extends Controller
return response()->json([
'token' => $jwt,
'expires_in' => $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
'expiracion_segundos' => $expirationTime - time(), // Tiempo en segundos hasta la expiración
'tiempo_expiracion' => date('Y-m-d H:i:s', $expirationTime) // Fecha y hora de expiración
]);
}
}

Loading…
Cancel
Save