Files
zitadel/apps/login/src/app/(login)/invite/page.tsx

61 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-10-18 15:42:38 +02:00
import { Alert, AlertType } from "@/components/alert";
import { DynamicTheme } from "@/components/dynamic-theme";
import { InviteForm } from "@/components/invite-form";
import {
getBrandingSettings,
getDefaultOrg,
2024-10-23 14:28:33 +02:00
getLoginSettings,
2024-10-18 15:42:38 +02:00
getPasswordComplexitySettings,
} from "@/lib/zitadel";
import { getLocale, getTranslations } from "next-intl/server";
2024-11-22 11:27:37 +01:00
export default async function Page(props: {
searchParams: Promise<Record<string | number | symbol, string | undefined>>;
}) {
2024-11-22 11:25:03 +01:00
const searchParams = await props.searchParams;
2024-10-18 15:42:38 +02:00
const locale = getLocale();
const t = await getTranslations({ locale, namespace: "invite" });
let { firstname, lastname, email, organization } = searchParams;
if (!organization) {
const org = await getDefaultOrg();
if (!org) {
throw new Error("No default organization found");
}
organization = org.id;
}
2024-10-23 14:28:33 +02:00
const loginSettings = await getLoginSettings(organization);
2024-10-18 15:42:38 +02:00
const passwordComplexitySettings =
await getPasswordComplexitySettings(organization);
const branding = await getBrandingSettings(organization);
return (
<DynamicTheme branding={branding}>
<div className="flex flex-col items-center space-y-4">
<h1>{t("title")}</h1>
<p className="ztdl-p">{t("description")}</p>
2024-10-23 14:28:33 +02:00
{!loginSettings?.allowRegister ? (
<Alert type={AlertType.ALERT}>{t("notAllowed")}</Alert>
) : (
<Alert type={AlertType.INFO}>{t("info")}</Alert>
)}
2024-10-18 15:42:38 +02:00
2024-10-23 14:28:33 +02:00
{passwordComplexitySettings && loginSettings?.allowRegister && (
2024-10-18 15:42:38 +02:00
<InviteForm
organization={organization}
firstname={firstname}
lastname={lastname}
email={email}
></InviteForm>
)}
</div>
</DynamicTheme>
);
}