[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;
|
||||
}
|
||||
|
||||
// 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'));
|
||||
return null;
|
||||
}
|
||||
@ -697,9 +710,18 @@ function autoResetDemo(): void
|
||||
|
||||
$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
|
||||
$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