diff --git a/apps/console/src/pages/auth/ConfirmInvitationPage.tsx b/apps/console/src/pages/auth/ConfirmInvitationPage.tsx index 67ff0b9e0..e71ea451a 100644 --- a/apps/console/src/pages/auth/ConfirmInvitationPage.tsx +++ b/apps/console/src/pages/auth/ConfirmInvitationPage.tsx @@ -5,10 +5,8 @@ import { z } from "zod"; import { useFormWithSchema } from "/hooks/useFormWithSchema"; import { usePageTitle } from "@probo/hooks"; import { buildEndpoint } from "/providers/RelayProviders"; -import { useEffect } from "react"; const schema = z.object({ - token: z.string(), password: z.string().min(8), }); @@ -16,17 +14,28 @@ export default function ConfirmInvitationPage() { const { __ } = useTranslate(); const navigate = useNavigate(); const { toast } = useToast(); - const { register, handleSubmit, formState, setValue } = useFormWithSchema( + const { register, handleSubmit, formState } = useFormWithSchema( schema, { defaultValues: { - token: "", password: "", }, } ); const onSubmit = handleSubmit(async (data) => { + const searchParams = new URLSearchParams(location.search); + const token = searchParams.get("token"); + + if (!token) { + toast({ + title: __("Confirmation failed"), + description: __("Invalid or missing invitation token"), + variant: "error", + }); + return; + } + const response = await fetch( buildEndpoint("/api/console/v1/auth/invitation"), { @@ -35,7 +44,10 @@ export default function ConfirmInvitationPage() { "Content-Type": "application/json", }, credentials: "include", - body: JSON.stringify(data), + body: JSON.stringify({ + token: token, + password: data.password, + }), } ); @@ -60,15 +72,6 @@ export default function ConfirmInvitationPage() { usePageTitle(__("Confirm invitation")); - useEffect(() => { - const searchParams = new URLSearchParams(location.search); - const urlToken = searchParams.get("token"); - - if (urlToken) { - setValue("token", urlToken); - } - }, [location.search, setValue]); - return (