[FIX] simulate-nis2: rate limit reset + login retry in ensureUser
- autoResetDemo(): cancella tutti i file /tmp/nis2_ratelimit/*.json all'avvio così la re-esecuzione immediata non incappa in "Troppi tentativi" - ensureUser(): aggiunge retry login se register fallisce con "email già registrata" (caso in cui dbSeedUser ha inserito l'utente ma il primo login aveva avuto un errore transitorio) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
459d2bc8cd
commit
0a3f2d15e2
@ -260,6 +260,19 @@ function ensureUser(string $firstName, string $lastName, string $email, string $
|
|||||||
return $jwt;
|
return $jwt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ultimo tentativo: se register fallisce per "email già registrata" (utente inserito da
|
||||||
|
// dbSeedUser ma login aveva fallito per motivo transitorio), riprova il login.
|
||||||
|
$regMsg = strtolower($regRes['message'] ?? '');
|
||||||
|
if (str_contains($regMsg, 'registrat') || str_contains($regMsg, 'esiste') || $regRes['_http'] === 409) {
|
||||||
|
$retryLogin = api('POST', '/auth/login', ['email' => $email, 'password' => $password]);
|
||||||
|
if (!empty($retryLogin['data']['access_token'])) {
|
||||||
|
$jwt = $retryLogin['data']['access_token'];
|
||||||
|
$S['users'][$email] = ['jwt' => $jwt, 'id' => $retryLogin['data']['user']['id'] ?? null];
|
||||||
|
ok("Login (retry): $email");
|
||||||
|
return $jwt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fail("Registrazione fallita per $email: " . ($regRes['message'] ?? 'errore'));
|
fail("Registrazione fallita per $email: " . ($regRes['message'] ?? 'errore'));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -697,9 +710,18 @@ function autoResetDemo(): void
|
|||||||
|
|
||||||
$pdo->exec('SET FOREIGN_KEY_CHECKS=1');
|
$pdo->exec('SET FOREIGN_KEY_CHECKS=1');
|
||||||
|
|
||||||
|
// Pulisce i file rate limit (register + login) per permettere re-esecuzione immediata
|
||||||
|
$rateDir = '/tmp/nis2_ratelimit/';
|
||||||
|
$cleared = 0;
|
||||||
|
if (is_dir($rateDir)) {
|
||||||
|
foreach (glob($rateDir . '*.json') ?: [] as $f) {
|
||||||
|
if (@unlink($f)) $cleared++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Verifica org rimaste
|
// Verifica org rimaste
|
||||||
$orgCount = $pdo->query('SELECT COUNT(*) FROM organizations')->fetchColumn();
|
$orgCount = $pdo->query('SELECT COUNT(*) FROM organizations')->fetchColumn();
|
||||||
simLog("Auto-reset completato — {$deleted} record rimossi, {$orgCount} org base mantenute", 'ok');
|
simLog("Auto-reset completato — {$deleted} record rimossi, {$orgCount} org base mantenute" . ($cleared ? ", {$cleared} rate-limit file rimossi" : ''), 'ok');
|
||||||
}
|
}
|
||||||
|
|
||||||
// ────────────────────────────────────────────────────────────────────────────
|
// ────────────────────────────────────────────────────────────────────────────
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user