From 72243d2f781cdb29ac36af090ff19e28ca4d0076 Mon Sep 17 00:00:00 2001 From: Bereket Engida Date: Mon, 21 Oct 2024 18:33:55 +0300 Subject: [PATCH] fix: return proper error on conflict username --- .../better-auth/src/api/routes/sign-up.ts | 30 +++++++++++++------ .../better-auth/src/api/routes/update-user.ts | 1 - .../src/plugins/username/username.test.ts | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/packages/better-auth/src/api/routes/sign-up.ts b/packages/better-auth/src/api/routes/sign-up.ts index 89f7b1a163..d1650c9735 100644 --- a/packages/better-auth/src/api/routes/sign-up.ts +++ b/packages/better-auth/src/api/routes/sign-up.ts @@ -69,7 +69,6 @@ export const signUpEmail = () => message: "Password is too long", }); } - const dbUser = await ctx.context.internalAdapter.findUserByEmail(email); if (dbUser?.user) { ctx.context.logger.info(`Sign-up attempt for existing email: ${email}`); @@ -82,15 +81,28 @@ export const signUpEmail = () => ctx.context.options, additionalFields as any, ); - const createdUser = await ctx.context.internalAdapter.createUser({ - email: email.toLowerCase(), - name, - image, - ...additionalData, - emailVerified: false, - }); + let createdUser: User; + try { + createdUser = await ctx.context.internalAdapter.createUser({ + email: email.toLowerCase(), + name, + image, + ...additionalData, + emailVerified: false, + }); + if (!createdUser) { + throw new APIError("BAD_REQUEST", { + message: "Failed to create user", + }); + } + } catch (e) { + throw new APIError("UNPROCESSABLE_ENTITY", { + message: "Failed to create user", + details: e, + }); + } if (!createdUser) { - throw new APIError("BAD_REQUEST", { + throw new APIError("UNPROCESSABLE_ENTITY", { message: "Failed to create user", }); } diff --git a/packages/better-auth/src/api/routes/update-user.ts b/packages/better-auth/src/api/routes/update-user.ts index c733f7b25d..37aac04328 100644 --- a/packages/better-auth/src/api/routes/update-user.ts +++ b/packages/better-auth/src/api/routes/update-user.ts @@ -42,7 +42,6 @@ export const updateUser = () => }); } const additionalFields = parseUserInput(ctx.context.options, rest); - console.log({ additionalFields }); const user = await ctx.context.internalAdapter.updateUserByEmail( session.user.email, { diff --git a/packages/better-auth/src/plugins/username/username.test.ts b/packages/better-auth/src/plugins/username/username.test.ts index dc63d60ed9..2c6a587a37 100644 --- a/packages/better-auth/src/plugins/username/username.test.ts +++ b/packages/better-auth/src/plugins/username/username.test.ts @@ -25,7 +25,7 @@ describe("username", async (it) => { expect(res.data?.user.username).toBe("new-username"); }); const headers = new Headers(); - it("should signin with username", async () => { + it("should sign-in with username", async () => { const res = await client.signIn.username( { username: "new-username",