From 8d969449e2f298f18b085eacec7d7082d1f8f95e Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 12 Nov 2024 12:07:31 +0100 Subject: [PATCH] handle password redirect from browser --- apps/login/src/components/change-password-form.tsx | 6 ++++++ apps/login/src/components/password-form.tsx | 9 +++++++-- apps/login/src/components/set-password-form.tsx | 8 ++++++++ apps/login/src/lib/server/password.ts | 3 ++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/apps/login/src/components/change-password-form.tsx b/apps/login/src/components/change-password-form.tsx index b203019a7ab..0ffd79a7a33 100644 --- a/apps/login/src/components/change-password-form.tsx +++ b/apps/login/src/components/change-password-form.tsx @@ -12,6 +12,7 @@ import { create } from "@zitadel/client"; import { ChecksSchema } from "@zitadel/proto/zitadel/session/v2/session_service_pb"; import { PasswordComplexitySettings } from "@zitadel/proto/zitadel/settings/v2/password_settings_pb"; import { useTranslations } from "next-intl"; +import { redirect } from "next/navigation"; import { useState } from "react"; import { FieldValues, useForm } from "react-hook-form"; import { Alert } from "./alert"; @@ -103,6 +104,11 @@ export function ChangePasswordForm({ passwordResponse.error ) { setError(passwordResponse.error); + return; + } + + if (passwordResponse && passwordResponse.nextStep) { + return redirect(passwordResponse.nextStep); } return; diff --git a/apps/login/src/components/password-form.tsx b/apps/login/src/components/password-form.tsx index 1f0e504af33..8621ac8d1cc 100644 --- a/apps/login/src/components/password-form.tsx +++ b/apps/login/src/components/password-form.tsx @@ -5,7 +5,7 @@ import { create } from "@zitadel/client"; import { ChecksSchema } from "@zitadel/proto/zitadel/session/v2/session_service_pb"; import { LoginSettings } from "@zitadel/proto/zitadel/settings/v2/login_settings_pb"; import { useTranslations } from "next-intl"; -import { useRouter } from "next/navigation"; +import { redirect, useRouter } from "next/navigation"; import { useState } from "react"; import { useForm } from "react-hook-form"; import { Alert, AlertType } from "./alert"; @@ -71,9 +71,14 @@ export function PasswordForm({ if (response && "error" in response && response.error) { setError(response.error); + return; } - return response; + if (response && response.nextStep) { + return redirect(response.nextStep); + } + + return; } async function resetPasswordAndContinue() { diff --git a/apps/login/src/components/set-password-form.tsx b/apps/login/src/components/set-password-form.tsx index 7bd0b7c488a..e0414b9d580 100644 --- a/apps/login/src/components/set-password-form.tsx +++ b/apps/login/src/components/set-password-form.tsx @@ -11,6 +11,7 @@ import { create } from "@zitadel/client"; import { ChecksSchema } from "@zitadel/proto/zitadel/session/v2/session_service_pb"; import { PasswordComplexitySettings } from "@zitadel/proto/zitadel/settings/v2/password_settings_pb"; import { useTranslations } from "next-intl"; +import { redirect } from "next/navigation"; import { useState } from "react"; import { FieldValues, useForm } from "react-hook-form"; import { Alert } from "./alert"; @@ -123,7 +124,14 @@ export function SetPasswordForm({ passwordResponse.error ) { setError(passwordResponse.error); + return; } + + if (passwordResponse && passwordResponse.nextStep) { + return redirect(passwordResponse.nextStep); + } + + return; } const { errors } = formState; diff --git a/apps/login/src/lib/server/password.ts b/apps/login/src/lib/server/password.ts index 2cb512bb971..067517abe23 100644 --- a/apps/login/src/lib/server/password.ts +++ b/apps/login/src/lib/server/password.ts @@ -249,7 +249,8 @@ export async function sendPassword(command: UpdateSessionCommand) { params.append("organization", command.organization); } - return redirect(`/login?` + params); + // move this to browser + return { nextStep: `/login?${params}` }; } // without OIDC flow