Register: auto sign-in to /me and speed/cleanup improvements
CI / check (push) Failing after 30s
CI / release (push) Skipped
CI / deploy (push) Skipped

- Send the verification email after the response via after() so it
  never blocks sign-up
- Invalidate the cached login lookup right after account creation so
  the automatic sign-in always finds the fresh row
- Auto sign in with the submitted credentials and go straight to /me,
  with a fallback to /login?registered=1 if sign-in is refused (e.g.
  email verification required)
- Cache the register page's online/latest user queries to cut DB load
  under traffic
- Fix terms checkbox label double-toggle cancelling the selection
- Add pages.register.redirecting translation to all locales
This commit is contained in:
openhands committed 2026-08-26 14:57:51 +02:00
1 parent 2d09a4a92c
commit f25a26a93e
25 files changed
+143 -53

No files matched your search

+46 -24
View File
File diff suppressed because it is too large. Load diff
+14 -12
View File
@@ -33,18 +33,20 @@ export default async function RegisterPage() {
.where(eq(User.online, "1")) .where(eq(User.online, "1"))
.then((rows) => rows[0]?.total ?? 0), .then((rows) => rows[0]?.total ?? 0),
).catch(() => 0), ).catch(() => 0),
db cached("register_online_users", 10_000, () =>
.select({ username: User.username, look: User.look }) db
.from(User) .select({ username: User.username, look: User.look })
.where(eq(User.online, "1")) .from(User)
.limit(8) .where(eq(User.online, "1"))
.catch(() => []), .limit(8),
db ).catch(() => []),
.select({ username: User.username, look: User.look }) cached("register_latest_users", 30_000, () =>
.from(User) db
.orderBy(desc(User.accountCreated)) .select({ username: User.username, look: User.look })
.limit(8) .from(User)
.catch(() => []), .orderBy(desc(User.accountCreated))
.limit(8),
).catch(() => []),
]); ]);
return ( return (
File diff suppressed because it is too large. Load diff
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Аз съм на 18+ и приемам условията и правилата на {hotel}.", "termsAccept": "Аз съм на 18+ и приемам условията и правилата на {hotel}.",
"createAccount": "Създаване на акаунт", "createAccount": "Създаване на акаунт",
"creatingAccount": "Създаване на акаунт...", "creatingAccount": "Създаване на акаунт...",
"redirecting": "Прехвърляне към вашия акаунт...",
"alreadyHaveAccount": "Вече имате акаунт? Вход!", "alreadyHaveAccount": "Вече имате акаунт? Вход!",
"register": "Регистрирайте се", "register": "Регистрирайте се",
"termsError": "Трябва да приемете условията и правилата, за да се регистрирате.", "termsError": "Трябва да приемете условията и правилата, за да се регистрирате.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Je mi 18+ a souhlasím s podmínkami a pravidly {hotel}.", "termsAccept": "Je mi 18+ a souhlasím s podmínkami a pravidly {hotel}.",
"createAccount": "Vytvořit účet", "createAccount": "Vytvořit účet",
"creatingAccount": "Vytváření účtu...", "creatingAccount": "Vytváření účtu...",
"redirecting": "Přesměrovávám na váš účet...",
"alreadyHaveAccount": "Už máte účet? Přihlášení!", "alreadyHaveAccount": "Už máte účet? Přihlášení!",
"register": "Zaregistrujte se", "register": "Zaregistrujte se",
"termsError": "Chcete-li se zaregistrovat, musíte přijmout podmínky a pravidla.", "termsError": "Chcete-li se zaregistrovat, musíte přijmout podmínky a pravidla.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Jeg er 18+ og accepterer vilkårene og reglerne for {hotel}.", "termsAccept": "Jeg er 18+ og accepterer vilkårene og reglerne for {hotel}.",
"createAccount": "Opret konto", "createAccount": "Opret konto",
"creatingAccount": "Opretter konto...", "creatingAccount": "Opretter konto...",
"redirecting": "Omdirigerer til din konto...",
"alreadyHaveAccount": "Har du allerede en konto? Log ind!", "alreadyHaveAccount": "Har du allerede en konto? Log ind!",
"register": "Tilmeld dig", "register": "Tilmeld dig",
"termsError": "Du skal acceptere vilkårene og reglerne for at registrere dig.", "termsError": "Du skal acceptere vilkårene og reglerne for at registrere dig.",
+1
View File
@@ -724,6 +724,7 @@
"termsAccept": "Ich bin 18+ und akzeptiere die {hotel} AGB & Regeln.", "termsAccept": "Ich bin 18+ und akzeptiere die {hotel} AGB & Regeln.",
"createAccount": "Konto erstellen", "createAccount": "Konto erstellen",
"creatingAccount": "Konto wird erstellt...", "creatingAccount": "Konto wird erstellt...",
"redirecting": "Weiterleitung zu deinem Account...",
"alreadyHaveAccount": "Bereits ein Konto? Anmelden!", "alreadyHaveAccount": "Bereits ein Konto? Anmelden!",
"register": "Registrieren", "register": "Registrieren",
"termsError": "Du musst die AGB & Regeln akzeptieren, um dich zu registrieren.", "termsError": "Du musst die AGB & Regeln akzeptieren, um dich zu registrieren.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Είμαι 18+ και αποδέχομαι τους όρους και τους κανόνες του {hotel}.", "termsAccept": "Είμαι 18+ και αποδέχομαι τους όρους και τους κανόνες του {hotel}.",
"createAccount": "Δημιουργία λογαριασμού", "createAccount": "Δημιουργία λογαριασμού",
"creatingAccount": "Δημιουργία λογαριασμού...", "creatingAccount": "Δημιουργία λογαριασμού...",
"redirecting": "Ανακατεύθυνση στον λογαριασμό σας...",
"alreadyHaveAccount": "Έχετε ήδη λογαριασμό; Σύνδεση!", "alreadyHaveAccount": "Έχετε ήδη λογαριασμό; Σύνδεση!",
"register": "Εγγραφή", "register": "Εγγραφή",
"termsError": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες για να εγγραφείτε.", "termsError": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες για να εγγραφείτε.",
+1
View File
@@ -903,6 +903,7 @@
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.", "termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
"createAccount": "Create account", "createAccount": "Create account",
"creatingAccount": "Creating account...", "creatingAccount": "Creating account...",
"redirecting": "Redirecting to your account...",
"alreadyHaveAccount": "Already have an account? Login!", "alreadyHaveAccount": "Already have an account? Login!",
"alreadyHaveAccountPre": "Already have an account?", "alreadyHaveAccountPre": "Already have an account?",
"alreadyHaveAccountLink": "Sign in", "alreadyHaveAccountLink": "Sign in",
+1
View File
@@ -724,6 +724,7 @@
"termsAccept": "Soy mayor de 18 años y acepto los términos y reglas de {hotel}.", "termsAccept": "Soy mayor de 18 años y acepto los términos y reglas de {hotel}.",
"createAccount": "Crear cuenta", "createAccount": "Crear cuenta",
"creatingAccount": "Creando cuenta...", "creatingAccount": "Creando cuenta...",
"redirecting": "Redirigiendo a tu cuenta...",
"alreadyHaveAccount": "¿Ya tienes una cuenta? ¡Inicia sesión!", "alreadyHaveAccount": "¿Ya tienes una cuenta? ¡Inicia sesión!",
"register": "Registrarse", "register": "Registrarse",
"termsError": "Debes aceptar los términos y reglas para registrarte.", "termsError": "Debes aceptar los términos y reglas para registrarte.",
+1
View File
@@ -724,6 +724,7 @@
"termsAccept": "J'ai 18 ans ou plus et j'accepte les conditions et règles de {hotel}.", "termsAccept": "J'ai 18 ans ou plus et j'accepte les conditions et règles de {hotel}.",
"createAccount": "Créer un compte", "createAccount": "Créer un compte",
"creatingAccount": "Création du compte...", "creatingAccount": "Création du compte...",
"redirecting": "Redirection vers votre compte...",
"alreadyHaveAccount": "Vous avez déjà un compte ? Connectez-vous !", "alreadyHaveAccount": "Vous avez déjà un compte ? Connectez-vous !",
"register": "S'inscrire", "register": "S'inscrire",
"termsError": "Vous devez accepter les conditions et règles pour vous inscrire.", "termsError": "Vous devez accepter les conditions et règles pour vous inscrire.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Imam 18+ godina i prihvaćam odredbe i pravila hotela {hotel}.", "termsAccept": "Imam 18+ godina i prihvaćam odredbe i pravila hotela {hotel}.",
"createAccount": "Napravi račun", "createAccount": "Napravi račun",
"creatingAccount": "Izrada računa...", "creatingAccount": "Izrada računa...",
"redirecting": "Preusmjeravanje na vaš račun...",
"alreadyHaveAccount": "Već imate račun? Prijava!", "alreadyHaveAccount": "Već imate račun? Prijava!",
"register": "Registrirajte se", "register": "Registrirajte se",
"termsError": "Za registraciju morate prihvatiti uvjete i pravila.", "termsError": "Za registraciju morate prihvatiti uvjete i pravila.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "18 évesnél idősebb vagyok, és elfogadom a {hotel} feltételeit és szabályait.", "termsAccept": "18 évesnél idősebb vagyok, és elfogadom a {hotel} feltételeit és szabályait.",
"createAccount": "Hozzon létre fiókot", "createAccount": "Hozzon létre fiókot",
"creatingAccount": "Fiók létrehozása...", "creatingAccount": "Fiók létrehozása...",
"redirecting": "Átirányítás a fiókjához...",
"alreadyHaveAccount": "Már van fiókja? Bejelentkezés!", "alreadyHaveAccount": "Már van fiókja? Bejelentkezés!",
"register": "Regisztráció", "register": "Regisztráció",
"termsError": "A regisztrációhoz el kell fogadnia a feltételeket és szabályokat.", "termsError": "A regisztrációhoz el kell fogadnia a feltételeket és szabályokat.",
+1
View File
@@ -877,6 +877,7 @@
"termsAccept": "Ho 18+ anni e accetto i termini e regole di {hotel}.", "termsAccept": "Ho 18+ anni e accetto i termini e regole di {hotel}.",
"createAccount": "Crea account", "createAccount": "Crea account",
"creatingAccount": "Creazione account...", "creatingAccount": "Creazione account...",
"redirecting": "Reindirizzamento al tuo account...",
"alreadyHaveAccount": "Hai già un account? Accedi!", "alreadyHaveAccount": "Hai già un account? Accedi!",
"register": "Registrati", "register": "Registrati",
"termsError": "Devi accettare i termini e regole per registrarti.", "termsError": "Devi accettare i termini e regole per registrarti.",
+1
View File
@@ -907,6 +907,7 @@
"termsAccept": "Ik ben 18+ en accepteer de {hotel} voorwaarden & regels.", "termsAccept": "Ik ben 18+ en accepteer de {hotel} voorwaarden & regels.",
"createAccount": "Account aanmaken", "createAccount": "Account aanmaken",
"creatingAccount": "Account wordt aangemaakt...", "creatingAccount": "Account wordt aangemaakt...",
"redirecting": "Doorgaan naar je account...",
"alreadyHaveAccount": "Al een account? Inloggen!", "alreadyHaveAccount": "Al een account? Inloggen!",
"register": "Registreren", "register": "Registreren",
"alreadyHaveAccountPre": "Al een account?", "alreadyHaveAccountPre": "Al een account?",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Jeg er 18+ og godtar vilkårene og reglene for {hotel}.", "termsAccept": "Jeg er 18+ og godtar vilkårene og reglene for {hotel}.",
"createAccount": "Opprett konto", "createAccount": "Opprett konto",
"creatingAccount": "Oppretter konto ...", "creatingAccount": "Oppretter konto ...",
"redirecting": "Videre til kontoen din...",
"alreadyHaveAccount": "Har du allerede en konto? Logg inn!", "alreadyHaveAccount": "Har du allerede en konto? Logg inn!",
"register": "Registrer deg", "register": "Registrer deg",
"termsError": "Du må godta vilkårene og reglene for å registrere deg.", "termsError": "Du må godta vilkårene og reglene for å registrere deg.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Mam ukończone 18 lat i akceptuję warunki i zasady hotelu {hotel}.", "termsAccept": "Mam ukończone 18 lat i akceptuję warunki i zasady hotelu {hotel}.",
"createAccount": "Utwórz konto", "createAccount": "Utwórz konto",
"creatingAccount": "Tworzenie konta...", "creatingAccount": "Tworzenie konta...",
"redirecting": "Przekierowywanie na twoje konto...",
"alreadyHaveAccount": "Masz już konto? Login!", "alreadyHaveAccount": "Masz już konto? Login!",
"register": "Zarejestruj się", "register": "Zarejestruj się",
"termsError": "Aby się zarejestrować, musisz zaakceptować regulamin.", "termsError": "Aby się zarejestrować, musisz zaakceptować regulamin.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Tenho mais de 18 anos e aceito os termos e regras do {hotel}.", "termsAccept": "Tenho mais de 18 anos e aceito os termos e regras do {hotel}.",
"createAccount": "Criar conta", "createAccount": "Criar conta",
"creatingAccount": "Criando conta...", "creatingAccount": "Criando conta...",
"redirecting": "A redirecionar para a sua conta...",
"alreadyHaveAccount": "Já tem uma conta? Conecte-se!", "alreadyHaveAccount": "Já tem uma conta? Conecte-se!",
"register": "Cadastre-se", "register": "Cadastre-se",
"termsError": "Você deve aceitar os termos e regras para se registrar.", "termsError": "Você deve aceitar os termos e regras para se registrar.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Am peste 18 ani și accept termenii și regulile {hotel}.", "termsAccept": "Am peste 18 ani și accept termenii și regulile {hotel}.",
"createAccount": "Creați cont", "createAccount": "Creați cont",
"creatingAccount": "Se creează cont...", "creatingAccount": "Se creează cont...",
"redirecting": "Se redirecționează către contul tău...",
"alreadyHaveAccount": "Aveți deja un cont? Log in!", "alreadyHaveAccount": "Aveți deja un cont? Log in!",
"register": "Înregistrează-te", "register": "Înregistrează-te",
"termsError": "Trebuie să acceptați termenii și regulile pentru a vă înregistra.", "termsError": "Trebuie să acceptați termenii și regulile pentru a vă înregistra.",
+1
View File
@@ -752,6 +752,7 @@
"termsAccept": "Мне 18+ и я принимаю условия и правила {hotel}.", "termsAccept": "Мне 18+ и я принимаю условия и правила {hotel}.",
"createAccount": "Создать аккаунт", "createAccount": "Создать аккаунт",
"creatingAccount": "Создание учетной записи...", "creatingAccount": "Создание учетной записи...",
"redirecting": "Переход в ваш аккаунт...",
"alreadyHaveAccount": "Уже есть аккаунт? Войти!", "alreadyHaveAccount": "Уже есть аккаунт? Войти!",
"register": "Регистрация", "register": "Регистрация",
"termsError": "Чтобы зарегистрироваться, вы должны принять условия и правила.", "termsError": "Чтобы зарегистрироваться, вы должны принять условия и правила.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Mám 18+ a súhlasím so zmluvnými podmienkami a pravidlami {hotel}.", "termsAccept": "Mám 18+ a súhlasím so zmluvnými podmienkami a pravidlami {hotel}.",
"createAccount": "Vytvoriť účet", "createAccount": "Vytvoriť účet",
"creatingAccount": "Vytvára sa účet...", "creatingAccount": "Vytvára sa účet...",
"redirecting": "Presmerovávam na váš účet...",
"alreadyHaveAccount": "Už máte účet? Prihláste sa!", "alreadyHaveAccount": "Už máte účet? Prihláste sa!",
"register": "Zaregistrujte sa", "register": "Zaregistrujte sa",
"termsError": "Ak sa chcete zaregistrovať, musíte prijať podmienky a pravidlá.", "termsError": "Ak sa chcete zaregistrovať, musíte prijať podmienky a pravidlá.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.", "termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
"createAccount": "Креирајте налог", "createAccount": "Креирајте налог",
"creatingAccount": "Прављење налога...", "creatingAccount": "Прављење налога...",
"redirecting": "Преусмеравање на ваш налог...",
"alreadyHaveAccount": "Већ имате налог? Пријавите се!", "alreadyHaveAccount": "Већ имате налог? Пријавите се!",
"register": "Региструјте се", "register": "Региструјте се",
"termsError": "Морате прихватити услове и правила да бисте се регистровали.", "termsError": "Морате прихватити услове и правила да бисте се регистровали.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Jag är 18+ och accepterar villkoren och reglerna för {hotel}.", "termsAccept": "Jag är 18+ och accepterar villkoren och reglerna för {hotel}.",
"createAccount": "Skapa konto", "createAccount": "Skapa konto",
"creatingAccount": "Skapar konto...", "creatingAccount": "Skapar konto...",
"redirecting": "Vidare till ditt konto...",
"alreadyHaveAccount": "Har du redan ett konto? Inloggning!", "alreadyHaveAccount": "Har du redan ett konto? Inloggning!",
"register": "Registrera dig", "register": "Registrera dig",
"termsError": "Du måste acceptera villkoren och reglerna för att registrera dig.", "termsError": "Du måste acceptera villkoren och reglerna för att registrera dig.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "18 yaşındayım ve {hotel} şartlarını ve kurallarını kabul ediyorum.", "termsAccept": "18 yaşındayım ve {hotel} şartlarını ve kurallarını kabul ediyorum.",
"createAccount": "Hesap oluştur", "createAccount": "Hesap oluştur",
"creatingAccount": "Hesap oluşturuluyor...", "creatingAccount": "Hesap oluşturuluyor...",
"redirecting": "Hesabınıza yönlendiriliyorsunuz...",
"alreadyHaveAccount": "Zaten bir hesabınız var mı? Giriş yapmak!", "alreadyHaveAccount": "Zaten bir hesabınız var mı? Giriş yapmak!",
"register": "Kayıt ol", "register": "Kayıt ol",
"termsError": "Kayıt olmak için şartları ve kuralları kabul etmelisiniz.", "termsError": "Kayıt olmak için şartları ve kuralları kabul etmelisiniz.",
+1
View File
@@ -754,6 +754,7 @@
"termsAccept": "Мені 18+ і я приймаю умови та правила {hotel}.", "termsAccept": "Мені 18+ і я приймаю умови та правила {hotel}.",
"createAccount": "Створити акаунт", "createAccount": "Створити акаунт",
"creatingAccount": "Створення облікового запису...", "creatingAccount": "Створення облікового запису...",
"redirecting": "Перехід до вашого акаунту...",
"alreadyHaveAccount": "Вже маєте акаунт? Вхід!", "alreadyHaveAccount": "Вже маєте акаунт? Вхід!",
"register": "зареєструватися", "register": "зареєструватися",
"termsError": "Ви повинні прийняти умови та правила, щоб зареєструватися.", "termsError": "Ви повинні прийняти умови та правила, щоб зареєструватися.",