diff --git a/apps/login/app/(login)/accounts/page.tsx b/apps/login/app/(login)/accounts/page.tsx index cf2e0037e9c..25eb1905092 100644 --- a/apps/login/app/(login)/accounts/page.tsx +++ b/apps/login/app/(login)/accounts/page.tsx @@ -31,7 +31,7 @@ export default async function Page() {
- +
diff --git a/apps/login/app/(login)/loginname/[loginname]/page.tsx b/apps/login/app/(login)/loginname/[loginname]/page.tsx new file mode 100644 index 00000000000..406a05b975e --- /dev/null +++ b/apps/login/app/(login)/loginname/[loginname]/page.tsx @@ -0,0 +1,19 @@ +import { getLoginSettings, server } from "#/lib/zitadel"; +import UsernameForm from "#/ui/UsernameForm"; + +export default async function Page({ + params, +}: { + params: { loginname: string }; +}) { + const login = await getLoginSettings(server); + + return ( +
+

Welcome back!

+

Enter your login data.

+ + +
+ ); +} diff --git a/apps/login/app/(login)/username/page.tsx b/apps/login/app/(login)/loginname/page.tsx similarity index 100% rename from apps/login/app/(login)/username/page.tsx rename to apps/login/app/(login)/loginname/page.tsx diff --git a/apps/login/app/methods/route.ts b/apps/login/app/methods/route.ts index 68a73b45acd..a1feabdddd0 100644 --- a/apps/login/app/methods/route.ts +++ b/apps/login/app/methods/route.ts @@ -54,8 +54,9 @@ export async function POST(request: NextRequest) { const createdSession = await createSession( server, loginName, + domain, undefined, - domain + undefined ); if (createdSession) { diff --git a/apps/login/app/session/route.ts b/apps/login/app/session/route.ts index f27d80660de..f8804b19a53 100644 --- a/apps/login/app/session/route.ts +++ b/apps/login/app/session/route.ts @@ -25,8 +25,9 @@ export async function POST(request: NextRequest) { const createdSession = await createSession( server, loginName, + domain, password, - domain + undefined ); if (createdSession) { diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 10ad3b1fc96..f9af1a11af3 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -21,6 +21,7 @@ import { SetSessionResponse, DeleteSessionResponse, VerifyPasskeyRegistrationResponse, + ChallengeKind, } from "@zitadel/server"; export const zitadelConfig: ZitadelServerOptions = { @@ -45,6 +46,15 @@ export async function getBrandingSettings( .then((resp: GetBrandingSettingsResponse) => resp.settings); } +export async function getLoginSettings( + server: ZitadelServer +): Promise { + const settingsService = settings.getSettings(server); + return settingsService + .getLoginSettings({}, {}) + .then((resp: GetLoginSettingsResponse) => resp.settings); +} + export async function getGeneralSettings( server: ZitadelServer ): Promise { @@ -78,13 +88,18 @@ export async function getPasswordComplexitySettings( export async function createSession( server: ZitadelServer, loginName: string, + domain: string, password: string | undefined, - domain: string + challenges: ChallengeKind[] | undefined ): Promise { const sessionService = session.getSession(server); return password ? sessionService.createSession( - { checks: { user: { loginName }, password: { password } }, domain }, + { + checks: { user: { loginName }, password: { password } }, + challenges, + domain, + }, {} ) : sessionService.createSession({ checks: { user: { loginName } } }, {}); diff --git a/apps/login/ui/VerifyEmailForm.tsx b/apps/login/ui/VerifyEmailForm.tsx index 219339a249e..de4ded3d9d0 100644 --- a/apps/login/ui/VerifyEmailForm.tsx +++ b/apps/login/ui/VerifyEmailForm.tsx @@ -87,7 +87,7 @@ export default function VerifyEmailForm({ userId, code, submit }: Props) { function submitCodeAndContinue(value: Inputs): Promise { return submitCode(value).then((resp: any) => { - return router.push(`/username`); + return router.push(`/loginname`); }); } diff --git a/packages/zitadel-server/src/index.ts b/packages/zitadel-server/src/index.ts index 8a997393c35..775d4b65cbd 100644 --- a/packages/zitadel-server/src/index.ts +++ b/packages/zitadel-server/src/index.ts @@ -12,6 +12,8 @@ export { Theme, } from "./proto/server/zitadel/settings/v2alpha/branding_settings"; +export { ChallengeKind } from "./proto/server/zitadel/session/v2alpha/challenge"; + export { Session } from "./proto/server/zitadel/session/v2alpha/session"; export { ListSessionsResponse, @@ -25,6 +27,8 @@ export { GetBrandingSettingsResponse, GetLegalAndSupportSettingsResponse, GetGeneralSettingsResponse, + GetLoginSettingsResponse, + GetLoginSettingsRequest, } from "./proto/server/zitadel/settings/v2alpha/settings_service"; export { AddHumanUserResponse,