import { verifySession } from "@app/lib/auth/verifySession"; import Link from "next/link"; import { redirect } from "next/navigation"; import { cache } from "react"; import DashboardLoginForm from "./DashboardLoginForm"; import { Mail } from "lucide-react"; import { pullEnv } from "@app/lib/pullEnv"; import { cleanRedirect } from "@app/lib/cleanRedirect"; import { idp } from "@server/db"; import { LoginFormIDP } from "@app/components/LoginForm"; import { priv } from "@app/lib/api"; import { AxiosResponse } from "axios"; import { ListIdpsResponse } from "@server/routers/idp"; import { getTranslations } from "next-intl/server"; export const dynamic = "force-dynamic"; export default async function Page(props: { searchParams: Promise<{ [key: string]: string | string[] | undefined }>; }) { const searchParams = await props.searchParams; const getUser = cache(verifySession); const user = await getUser(); const isInvite = searchParams?.redirect?.includes("/invite"); const env = pullEnv(); const signUpDisabled = env.flags.disableSignupWithoutInvite; if (user) { redirect("/"); } let redirectUrl: string | undefined = undefined; if (searchParams.redirect) { redirectUrl = cleanRedirect(searchParams.redirect as string); } const idpsRes = await cache( async () => await priv.get>("/idp") )(); const loginIdps = idpsRes.data.data.idps.map((idp) => ({ idpId: idp.idpId, name: idp.name })) as LoginFormIDP[]; const t = await getTranslations(); return ( <> {isInvite && (

{t('inviteAlready')}

{t('inviteAlreadyDescription')}

)} {(!signUpDisabled || isInvite) && (

{t('authNoAccount')}{" "} {t('signup')}

)} ); }