From 05314c7a4904dea013aea40913a1c6072e1ea5db Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 21 Jun 2023 14:06:19 +0200 Subject: [PATCH] show user creation error --- apps/login/app/(login)/error.tsx | 2 +- apps/login/app/registeruser/route.ts | 12 ++++++++--- apps/login/ui/SetPasswordForm.tsx | 31 ++++++++++++++++++---------- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/apps/login/app/(login)/error.tsx b/apps/login/app/(login)/error.tsx index 11d47e07c9b..614bdbd58ae 100644 --- a/apps/login/app/(login)/error.tsx +++ b/apps/login/app/(login)/error.tsx @@ -10,7 +10,7 @@ export default function Error({ error, reset }: any) { }, [error]); return ( - +
Error: {error?.message} diff --git a/apps/login/app/registeruser/route.ts b/apps/login/app/registeruser/route.ts index 2c9c6d89da4..119f041dfc5 100644 --- a/apps/login/app/registeruser/route.ts +++ b/apps/login/app/registeruser/route.ts @@ -6,13 +6,19 @@ export async function POST(request: NextRequest) { if (body) { const { email, password, firstName, lastName } = body; - const userId = await addHumanUser(server, { + return addHumanUser(server, { email: email, firstName, lastName, password: password ? password : undefined, - }); - return NextResponse.json({ userId }); + }) + .then((userId) => { + return NextResponse.json({ userId }); + }) + .catch((error) => { + console.log(error); + return NextResponse.json(error, { status: 500 }); + }); } else { return NextResponse.error(); } diff --git a/apps/login/ui/SetPasswordForm.tsx b/apps/login/ui/SetPasswordForm.tsx index d1df68efed1..55aec7e388a 100644 --- a/apps/login/ui/SetPasswordForm.tsx +++ b/apps/login/ui/SetPasswordForm.tsx @@ -14,6 +14,7 @@ import { } from "#/utils/validators"; import { useRouter } from "next/navigation"; import { Spinner } from "./Spinner"; +import Alert from "./Alert"; type Inputs = | { @@ -40,6 +41,7 @@ export default function SetPasswordForm({ }); const [loading, setLoading] = useState(false); + const [error, setError] = useState(""); const router = useRouter(); @@ -59,7 +61,8 @@ export default function SetPasswordForm({ }); setLoading(false); if (!res.ok) { - throw new Error("Failed to register user"); + const error = await res.json(); + throw new Error(error.details); } return res.json(); } @@ -68,7 +71,6 @@ export default function SetPasswordForm({ loginName: string, password: string ) { - setLoading(true); const res = await fetch("/session", { method: "POST", headers: { @@ -80,7 +82,6 @@ export default function SetPasswordForm({ }), }); - setLoading(false); if (!res.ok) { throw new Error("Failed to set user"); } @@ -88,13 +89,21 @@ export default function SetPasswordForm({ } function submitAndLink(value: Inputs): Promise { - return submitRegister(value).then((humanResponse: any) => { - return createSessionWithLoginNameAndPassword(email, value.password).then( - () => { + return submitRegister(value) + .then((humanResponse: any) => { + setError(""); + return createSessionWithLoginNameAndPassword( + email, + value.password + ).then(() => { + setLoading(false); return router.push(`/verify?userID=${humanResponse.userId}`); - } - ); - }); + }); + }) + .catch((errorDetails: Error) => { + setLoading(false); + setError(errorDetails.message); + }); } const { errors } = formState; @@ -102,8 +111,6 @@ export default function SetPasswordForm({ const watchPassword = watch("password", ""); const watchConfirmPassword = watch("confirmPassword", ""); - const [tosAndPolicyAccepted, setTosAndPolicyAccepted] = useState(false); - const hasMinLength = passwordComplexitySettings && watchPassword?.length >= passwordComplexitySettings.minLength; @@ -157,6 +164,8 @@ export default function SetPasswordForm({ /> )} + {error && {error}} +