diff --git a/installer/classes/Installer.php b/installer/classes/Installer.php index fca97cf2..2cce4861 100755 --- a/installer/classes/Installer.php +++ b/installer/classes/Installer.php @@ -853,6 +853,17 @@ public function createAdminUser($nome, $cognome, $email, $password) { 'codice_tessera' => $codiceTessera ]; } catch (PDOException $e) { + // A duplicate email means an admin with this address already exists — + // e.g. re-running the installer against a database that survived while + // the .installed marker was lost (failed-install retry, DB restore + // without the marker, or a docroot/marker mishap). Surface a clear, + // actionable message instead of a raw SQL error. + if ($e->getCode() === '23000' || stripos($e->getMessage(), 'Duplicate entry') !== false) { + throw new \RuntimeException(sprintf( + __("Esiste già un utente con l'email %s. Se stai reinstallando su un database esistente, accedi con le credenziali esistenti oppure usa un'altra email."), + $email + ), 0, $e); + } throw $e; } } diff --git a/locale/de_DE.json b/locale/de_DE.json index 137ff433..9b960d7c 100644 --- a/locale/de_DE.json +++ b/locale/de_DE.json @@ -1,4 +1,5 @@ { + "Esiste già un utente con l'email %s. Se stai reinstallando su un database esistente, accedi con le credenziali esistenti oppure usa un'altra email.": "Ein Benutzer mit der E-Mail-Adresse %s existiert bereits. Wenn Sie auf einer bestehenden Datenbank neu installieren, melden Sie sich mit den vorhandenen Zugangsdaten an oder verwenden Sie eine andere E-Mail-Adresse.", " libri": " Bücher", "\"%s\" prestato a %s è in ritardo di %d giorni": "\"%s\" ausgeliehen an %s ist %d Tage überfällig", "$1": "$1", diff --git a/locale/en_US.json b/locale/en_US.json index 46a66b10..faec1085 100644 --- a/locale/en_US.json +++ b/locale/en_US.json @@ -1,4 +1,5 @@ { + "Esiste già un utente con l'email %s. Se stai reinstallando su un database esistente, accedi con le credenziali esistenti oppure usa un'altra email.": "A user with the email %s already exists. If you are reinstalling over an existing database, log in with the existing credentials or use a different email.", " libri": " books", "\"%s\" prestato a %s è in ritardo di %d giorni": "\"%s\" loaned to %s is %d days overdue", "$1": "$1", diff --git a/locale/fr_FR.json b/locale/fr_FR.json index dfe829d7..ab51c949 100644 --- a/locale/fr_FR.json +++ b/locale/fr_FR.json @@ -1,4 +1,5 @@ { + "Esiste già un utente con l'email %s. Se stai reinstallando su un database esistente, accedi con le credenziali esistenti oppure usa un'altra email.": "Un utilisateur avec l'e-mail %s existe déjà. Si vous réinstallez sur une base de données existante, connectez-vous avec les identifiants existants ou utilisez une autre adresse e-mail.", " libri": " livres", "\"%s\" prestato a %s è in ritardo di %d giorni": "\"%s\" emprunté par %s est en retard de %d jours", "$1": "$1", diff --git a/locale/it_IT.json b/locale/it_IT.json index 6d1156ab..1ca51de9 100644 --- a/locale/it_IT.json +++ b/locale/it_IT.json @@ -1,4 +1,5 @@ { + "Esiste già un utente con l'email %s. Se stai reinstallando su un database esistente, accedi con le credenziali esistenti oppure usa un'altra email.": "Esiste già un utente con l'email %s. Se stai reinstallando su un database esistente, accedi con le credenziali esistenti oppure usa un'altra email.", " libri": " libri", "\"%s\" prestato a %s è in ritardo di %d giorni": "\"%s\" prestato a %s è in ritardo di %d giorni", "$1": "$1",