This commit is contained in:
2025-05-12 15:39:29 -06:00
2 changed files with 29 additions and 9 deletions

1
.env
View File

@@ -12,6 +12,7 @@ RECAPTCHA_SECRET=6LfkMB8rAAAAAFWMAZmIqtN0ocDzg9t1g0_xbkkN
SMTP_PASS=N036p7y!
API_URL=http://50.21.176.205:3000
API_USER=adminAS
API_PASS=zC?K.Z5o2tiLN4gE

View File

@@ -13,18 +13,32 @@ loadEnv();
/**
* Obtiene (y cachea en sesión) el JWT de la API usando las credenciales de $_ENV
*/
/**
* Obtiene (y cachea) el JWT de la API usando credenciales de $_ENV
* Gestiona expiración: asume 1 hora de vida y renueva si ha pasado.
*/
function getApiToken(): ?string
{
if (!empty($_SESSION['api_token'])) {
// Duración en segundos del token (60 min)
$ttl = 3600;
// 1) Si ya tenemos token y no ha expirado, lo devolvemos
if (!empty($_SESSION['api_token']) && !empty($_SESSION['api_token_time'])) {
$age = time() - $_SESSION['api_token_time'];
if ($age < $ttl) {
error_log("[getApiToken] Usando token en caché (edad: {$age}s)");
return $_SESSION['api_token'];
}
error_log("[getApiToken] Token expirado (edad: {$age}s), obteniendo uno nuevo");
}
// 2) Sí o sí hacemos login en la API
$url = rtrim($_ENV['API_URL'] ?? '', '/') . '/auth/login';
$user = $_ENV['API_USER'] ?? '';
$pass = $_ENV['API_PASS'] ?? '';
$body = json_encode(['username'=>$user,'password'=>$pass]);
$body = json_encode(['username' => $user, 'password' => $pass]);
error_log("[getApiToken] POST $url body: $body");
error_log("[getApiToken] POST $url$body");
$ch = curl_init($url);
curl_setopt_array($ch, [
@@ -38,16 +52,21 @@ function getApiToken(): ?string
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
error_log("[getApiToken] HTTP $http resp: $resp");
error_log("[getApiToken] HTTP $http$resp");
if ($http === 200 && ($data = json_decode($resp, true)) && !empty($data['token'])) {
// 3) Guardamos token y tiempo actual
$_SESSION['api_token'] = $data['token'];
$_SESSION['api_token_time'] = time();
return $data['token'];
}
// 4) Si no se pudo obtener, devolvemos null
error_log('[getApiToken] No se pudo obtener token de la API');
return null;
}
/**
* GET /IMPORTADORES/proveedores
* Muestra la vista de listado
@@ -150,7 +169,7 @@ function eliminar()
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token",'Accept: application/json'],
CURLOPT_HTTPHEADER => ["Authorization: $token",'Accept: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);