From 4077353048be3aa8bc425b7fdeaa87f9e48be07c Mon Sep 17 00:00:00 2001 From: peintnermax Date: Mon, 16 Sep 2024 14:41:38 +0200 Subject: [PATCH] return error as object from server actions --- apps/login/next.config.mjs | 3 --- apps/login/src/lib/server/loginname.ts | 13 +++++++------ apps/login/src/ui/UsernameForm.tsx | 6 +++++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/login/next.config.mjs b/apps/login/next.config.mjs index 099d37e81d5..94df2408a08 100755 --- a/apps/login/next.config.mjs +++ b/apps/login/next.config.mjs @@ -33,9 +33,6 @@ const secureHeaders = [ const nextConfig = { reactStrictMode: true, // Recommended for the `pages` directory, default in `app`. swcMinify: true, - experimental: { - serverComponentsErrorOverride: true, - }, images: { remotePatterns: [ { diff --git a/apps/login/src/lib/server/loginname.ts b/apps/login/src/lib/server/loginname.ts index 66fd2d824a6..18145c614d6 100644 --- a/apps/login/src/lib/server/loginname.ts +++ b/apps/login/src/lib/server/loginname.ts @@ -79,7 +79,7 @@ export async function sendLoginname(command: SendLoginnameCommand) { ); if (!session.factors?.user?.id) { - throw Error("Could not create session for user"); + return { error: "Could not create session for user" }; } const methods = await listAuthenticationMethodTypes( @@ -87,9 +87,10 @@ export async function sendLoginname(command: SendLoginnameCommand) { ); if (!methods.authMethodTypes || !methods.authMethodTypes.length) { - throw Error( - "User has no available authentication methods. Contact your administrator to setup authentication for the requested user.", - ); + return { + error: + "User has no available authentication methods. Contact your administrator to setup authentication for the requested user.", + }; } if (methods.authMethodTypes.length == 1) { @@ -175,7 +176,7 @@ export async function sendLoginname(command: SendLoginnameCommand) { // TODO: do we need to handle login hints for IDPs here? await redirectUserToSingleIDPIfAvailable(); - throw Error("Could not find user"); + return { error: "Could not find user" }; } else if ( loginSettings?.allowRegister && loginSettings?.allowUsernamePassword @@ -232,5 +233,5 @@ export async function sendLoginname(command: SendLoginnameCommand) { return redirect("/password?" + new URLSearchParams(paramsPasswordDefault)); } - throw Error("Could not find user"); + return { error: "Could not find user" }; } diff --git a/apps/login/src/ui/UsernameForm.tsx b/apps/login/src/ui/UsernameForm.tsx index 68beacf7e9a..93d21bcfdfe 100644 --- a/apps/login/src/ui/UsernameForm.tsx +++ b/apps/login/src/ui/UsernameForm.tsx @@ -51,9 +51,13 @@ export default function UsernameForm({ organization, authRequestId, }).catch((error: Error) => { - setError(error.message ?? "An internal error occurred"); + setError("An internal error occurred"); }); + if (res?.error) { + setError(res.error); + } + setLoading(false); return res;