From b2dfbc96b423e6fa738d3bd4f0672df4610e5d0c Mon Sep 17 00:00:00 2001 From: Bereket Engida <86073083+Bekacru@users.noreply.github.com> Date: Thu, 11 Sep 2025 17:49:10 -0700 Subject: [PATCH] fix(username): sign in should work with post normalization (#4599) Co-authored-by: Alex Yang --- .../better-auth/src/plugins/username/index.ts | 5 ++-- .../src/plugins/username/username.test.ts | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/better-auth/src/plugins/username/index.ts b/packages/better-auth/src/plugins/username/index.ts index 179127b7c7..3b406b1004 100644 --- a/packages/better-auth/src/plugins/username/index.ts +++ b/packages/better-auth/src/plugins/username/index.ts @@ -264,13 +264,13 @@ export const username = (options?: UsernameOptions) => { } const user = await ctx.context.adapter.findOne< - User & { username: string } + User & { username: string; displayUsername: string } >({ model: "user", where: [ { field: "username", - value: username, + value: normalizer(username), }, ], }); @@ -358,6 +358,7 @@ export const username = (options?: UsernameOptions) => { email: user.email, emailVerified: user.emailVerified, username: user.username, + displayUsername: user.displayUsername, name: user.name, image: user.image, createdAt: user.createdAt, diff --git a/packages/better-auth/src/plugins/username/username.test.ts b/packages/better-auth/src/plugins/username/username.test.ts index f87d46b735..d819ea4725 100644 --- a/packages/better-auth/src/plugins/username/username.test.ts +++ b/packages/better-auth/src/plugins/username/username.test.ts @@ -269,6 +269,31 @@ describe("username", async (it) => { expect(session?.user.username).toBe("custom_user"); expect(session?.user.displayUsername).toBe("Fancy Display Name"); }); + + it("should sign in with normalized username", async () => { + const { client } = await getTestInstance( + { + plugins: [username()], + }, + { + clientOptions: { + plugins: [usernameClient()], + }, + }, + ); + await client.signUp.email({ + email: "normalized-username@email.com", + username: "Custom_User", + password: "test-password", + name: "test-name", + }); + const res2 = await client.signIn.username({ + username: "Custom_User", + password: "test-password", + }); + expect(res2.data?.user.username).toBe("custom_user"); + expect(res2.data?.user.displayUsername).toBe("Custom_User"); + }); }); describe("username custom normalization", async (it) => {