diff --git a/apps/login/src/app/(login)/loginname/page.tsx b/apps/login/src/app/(login)/loginname/page.tsx index 44601e18450..8f96927dd0b 100644 --- a/apps/login/src/app/(login)/loginname/page.tsx +++ b/apps/login/src/app/(login)/loginname/page.tsx @@ -54,6 +54,7 @@ export default async function Page(props: { loginName={loginName} authRequestId={authRequestId} organization={organization} // stick to "organization" as we still want to do user discovery based on the searchParams not the default organization, later the organization is determined by the found user + loginSettings={loginSettings} submit={submit} allowRegister={!!loginSettings?.allowRegister} > diff --git a/apps/login/src/components/username-form.tsx b/apps/login/src/components/username-form.tsx index 887c454333c..3a35bdd120a 100644 --- a/apps/login/src/components/username-form.tsx +++ b/apps/login/src/components/username-form.tsx @@ -1,6 +1,7 @@ "use client"; import { sendLoginname } from "@/lib/server/loginname"; +import { LoginSettings } from "@zitadel/proto/zitadel/settings/v2/login_settings_pb"; import { useTranslations } from "next-intl"; import { useRouter } from "next/navigation"; import { ReactNode, useEffect, useState } from "react"; @@ -18,6 +19,7 @@ type Inputs = { type Props = { loginName: string | undefined; authRequestId: string | undefined; + loginSettings: LoginSettings | undefined; organization?: string; submit: boolean; allowRegister: boolean; @@ -28,6 +30,7 @@ export function UsernameForm({ loginName, authRequestId, organization, + loginSettings, submit, allowRegister, children, @@ -80,6 +83,18 @@ export function UsernameForm({ } }, []); + let inputLabel = "Loginname"; + if ( + loginSettings?.disableLoginWithEmail && + loginSettings?.disableLoginWithPhone + ) { + inputLabel = "Username"; + } else if (loginSettings?.disableLoginWithEmail) { + inputLabel = "Username or phone number"; + } else if (loginSettings?.disableLoginWithPhone) { + inputLabel = "Username or email"; + } + return (