feat(registration): add email confirmation UI
Build, Test & Push Frontend / quality-check (push) Successful in 26s
Build, Test & Push Frontend / docker (push) Successful in 31s

New ConfirmEmailPage for users to verify their email and set password.
Resend form on registration and error pages. Registration form no
longer asks for a password. Confirmation requires a button click. The
admin list marks unconfirmed requests and offers only delete for them.
This commit is contained in:
lobo committed 2026-10-01 16:20:51 +02:00
1 parent 249973dd69
commit 6dda186bdf
15 files changed
+416 -50

No files matched your search

+18 -2
View File
@@ -25,16 +25,27 @@
"PASSWORD": "Passwort",
"PASSWORD_CONFIRMATION": "Passwort bestätigen",
"SUBMIT": "Konto erstellen",
"SUCCESS": "Registrierung gesendet. Du bekommst eine Mail, sobald der Admin entschieden hat.",
"SUCCESS": "Wir haben dir eine Mail geschickt. Klick auf den Link darin, um deine Adresse zu bestätigen und dein Passwort zu wählen; erst dann sieht der Admin deine Anfrage.",
"RESEND_EMAIL": "E-Mail",
"RESEND": "Link noch einmal senden",
"RESEND_SENT": "Wenn für diese Adresse eine unbestätigte Registrierung besteht, ist ein neuer Link unterwegs.",
"HAVE_ACCOUNT": "Bereits ein Konto?",
"ERROR_GENERIC": "Registrierung fehlgeschlagen. Bitte erneut versuchen.",
"ERROR_EMAIL_IN_USE": "Diese Email-Adresse ist bereits registriert.",
"DISPLAY_NAME": "Anzeigename (optional)",
"ERROR_DISPLAY_NAME_IN_USE": "Dieser Anzeigename ist schon vergeben.",
"ERROR_TOO_MANY_ATTEMPTS": "Zu viele fehlgeschlagene Versuche. Bitte in {{minutes}} Minuten erneut versuchen.",
"INTRO": "Ein Admin prüft jedes neue Konto. Du bekommst eine Mail, sobald über deins entschieden ist.",
"INTRO": "Du bekommst eine Mail mit einem Link: dort bestätigst du deine Adresse und wählst dein Passwort. Danach prüft ein Admin dein Konto und du bekommst eine Mail mit der Entscheidung.",
"ERROR_PENDING_LIMIT": "Gerade warten zu viele Registrierungen auf den Admin. Bitte versuch es später noch einmal."
},
"CONFIRM_EMAIL": {
"TITLE": "E-Mail-Adresse bestätigen",
"INTRO": "Wähle ein Passwort, um die Adresse deiner Registrierung zu bestätigen.",
"SUBMIT": "Bestätigen",
"DONE": "Deine Adresse ist bestätigt. Ein Admin prüft deine Anfrage; du bekommst eine Mail, sobald entschieden ist.",
"INVALID": "Dieser Link ist unbekannt, schon benutzt oder älter als 24 Stunden. Fordere einen neuen an:",
"TO_LOGIN": "Anmelden"
},
"SETTINGS": {
"PROFILE_STYLE": "Aussehen des Profils",
"PROFILE_STYLE_HINT": "So sehen Besucher dein öffentliches Profil. Das Aussehen deiner App bleibt, wie es ist.",
@@ -561,6 +572,11 @@
"DENY_TITLE": "{{email}} ablehnen?",
"DENY_TEXT": "Der Nutzer bekommt eine Mail und kann sich nicht anmelden. Die Anfrage wird nach 30 Tagen endgültig gelöscht.",
"DONE_ACCEPT": "Registrierung angenommen",
"UNCONFIRMED": "Nicht bestätigt",
"DELETE_UNCONFIRMED_TITLE": "{{email}} löschen?",
"DELETE_UNCONFIRMED_TEXT": "Die Adresse ist nicht bestätigt. Die Anfrage wird sofort und endgültig entfernt; die Adresse ist wieder frei.",
"ERROR_TARGET_IS_UNCONFIRMED": "Die Adresse ist nicht bestätigt: lösche die Anfrage.",
"ERROR_NOT_UNCONFIRMED": "Die Anfrage ist schon bestätigt.",
"DONE_DENY": "Registrierung abgelehnt",
"ERROR_NOT_PENDING": "Diese Registrierung ist schon entschieden.",
"ERROR_TARGET_IS_PENDING": "Nimm die Registrierung erst an oder lehne sie ab."
+18 -2
View File
@@ -25,16 +25,27 @@
"PASSWORD": "Password",
"PASSWORD_CONFIRMATION": "Confirm password",
"SUBMIT": "Create account",
"SUCCESS": "Registration sent. You get a mail as soon as the admin has decided.",
"SUCCESS": "We sent you a mail. Click the link in it to confirm your address and choose your password; only then does the admin see your request.",
"RESEND_EMAIL": "Email",
"RESEND": "Send the link again",
"RESEND_SENT": "If this address has an unconfirmed registration, a new link is on its way.",
"HAVE_ACCOUNT": "Already have an account?",
"ERROR_GENERIC": "Registration failed. Please try again.",
"ERROR_EMAIL_IN_USE": "This email address is already registered.",
"DISPLAY_NAME": "Display name (optional)",
"ERROR_DISPLAY_NAME_IN_USE": "This display name is already taken.",
"ERROR_TOO_MANY_ATTEMPTS": "Too many failed attempts. Please try again in {{minutes}} minutes.",
"INTRO": "An admin checks each new account. You get a mail as soon as yours is decided.",
"INTRO": "You get a mail with a link: there you confirm your address and choose your password. Then an admin checks your account and you get a mail with the decision.",
"ERROR_PENDING_LIMIT": "Too many registrations wait for the admin right now. Please try again later."
},
"CONFIRM_EMAIL": {
"TITLE": "Confirm your email address",
"INTRO": "Choose a password to confirm the address of your registration.",
"SUBMIT": "Confirm",
"DONE": "Your address is confirmed. An admin checks your request; you get a mail as soon as it is decided.",
"INVALID": "This link is unknown, already used or older than 24 hours. Request a new one:",
"TO_LOGIN": "Log in"
},
"SETTINGS": {
"PROFILE_STYLE": "Profile look",
"PROFILE_STYLE_HINT": "How visitors see your public profile. Your own app look stays as it is.",
@@ -561,6 +572,11 @@
"DENY_TITLE": "Deny {{email}}?",
"DENY_TEXT": "The user gets a mail and cannot log in. The request is removed for good after 30 days.",
"DONE_ACCEPT": "Registration accepted",
"UNCONFIRMED": "Not confirmed",
"DELETE_UNCONFIRMED_TITLE": "Delete {{email}}?",
"DELETE_UNCONFIRMED_TEXT": "The address is not confirmed. The request is removed at once for good; the address is free again.",
"ERROR_TARGET_IS_UNCONFIRMED": "The address is not confirmed: delete the request.",
"ERROR_NOT_UNCONFIRMED": "The request is confirmed already.",
"DONE_DENY": "Registration denied",
"ERROR_NOT_PENDING": "This registration is decided already.",
"ERROR_TARGET_IS_PENDING": "Accept or deny the registration first."