CI / check (push) Successful in 35s
CI / tests-integration (push) Successful in 2m22s
CI / tests-unit (push) Successful in 2m30s
CI / tests-imaging-browsers (push) Successful in 1m35s
CI / tests-quality (push) Successful in 1m0s
CI / tests-ui (push) Successful in 6m17s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 36s
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { redirect } from "next/navigation";
|
|
import { getTranslations } from "next-intl/server";
|
|
import {
|
|
AuthLandingView,
|
|
loadAuthLanding,
|
|
} from "@/components/auth/auth-landing";
|
|
import { RegisterForm } from "@/components/auth/register-form";
|
|
import { auth } from "@/lib/auth";
|
|
import { passwordPolicy } from "@/lib/auth/password-policy";
|
|
|
|
export async function generateMetadata(): Promise<Metadata> {
|
|
const t = await getTranslations("pages.register");
|
|
const title = t("title");
|
|
const description = t("subtitle");
|
|
return {
|
|
title,
|
|
description,
|
|
robots: { index: false, follow: false },
|
|
openGraph: { title, description, type: "website" },
|
|
};
|
|
}
|
|
|
|
export default async function RegisterPage() {
|
|
const t = await getTranslations("pages.register");
|
|
|
|
// An account already exists in this browser — there is nothing to sign up.
|
|
const session = await auth();
|
|
if (session?.user?.id) redirect("/me");
|
|
|
|
const data = await loadAuthLanding();
|
|
|
|
return (
|
|
<AuthLandingView
|
|
data={data}
|
|
copy={{
|
|
title: t("title"),
|
|
subtitle: t("subtitle"),
|
|
promoTitle: t("subtitle"),
|
|
promoSubtitle: undefined,
|
|
usersOnlineLabel: t("usersOnline", { count: data.online }),
|
|
whoIsOnlineLabel: t("whoIsOnline"),
|
|
newestCitizensLabel: t("newestCitizens"),
|
|
}}
|
|
form={
|
|
<RegisterForm
|
|
hotelName={data.hotelName}
|
|
captcha={data.captcha}
|
|
nonce={data.nonce}
|
|
passwordMinLength={passwordPolicy.minLength}
|
|
passwordMaxLength={passwordPolicy.maxLength}
|
|
/>
|
|
}
|
|
/>
|
|
);
|
|
}
|