diff --git a/docs/content/docs/plugins/last-login-method.mdx b/docs/content/docs/plugins/last-login-method.mdx index dfc67b74d5..8a390ecf34 100644 --- a/docs/content/docs/plugins/last-login-method.mdx +++ b/docs/content/docs/plugins/last-login-method.mdx @@ -344,7 +344,7 @@ export const auth = betterAuth({ } // Track magic link authentication - if (ctx.path === "/verify-magic-link") { + if (ctx.path === "/magic-link/verify") { return "magic-link" } diff --git a/packages/better-auth/src/plugins/last-login-method/index.ts b/packages/better-auth/src/plugins/last-login-method/index.ts index 020e2abff0..4c7ec76055 100644 --- a/packages/better-auth/src/plugins/last-login-method/index.ts +++ b/packages/better-auth/src/plugins/last-login-method/index.ts @@ -49,15 +49,17 @@ export const lastLoginMethod = ( "/sign-in/email", "/sign-up/email", ]; + + const defaultResolveMethod = (ctx: GenericEndpointContext) => { + if (paths.includes(ctx.path)) { + return ctx.params?.id ? ctx.params.id : ctx.path.split("/").pop(); + } + return null; + }; + const config = { cookieName: "better-auth.last_used_login_method", maxAge: 60 * 60 * 24 * 30, - customResolveMethod: (ctx) => { - if (paths.includes(ctx.path)) { - return ctx.params?.id ? ctx.params.id : ctx.path.split("/").pop(); - } - return null; - }, ...userConfig, } satisfies LastLoginMethodOptions; @@ -73,7 +75,8 @@ export const lastLoginMethod = ( if (!config.storeInDatabase) return; if (!context) return; const lastUsedLoginMethod = - config.customResolveMethod(context); + config.customResolveMethod?.(context) ?? + defaultResolveMethod(context); if (lastUsedLoginMethod) { return { data: { @@ -91,7 +94,8 @@ export const lastLoginMethod = ( if (!config.storeInDatabase) return; if (!context) return; const lastUsedLoginMethod = - config.customResolveMethod(context); + config.customResolveMethod?.(context) ?? + defaultResolveMethod(context); if (lastUsedLoginMethod && session?.userId) { try { await ctx.internalAdapter.updateUser(session.userId, { @@ -118,7 +122,8 @@ export const lastLoginMethod = ( return true; }, handler: createAuthMiddleware(async (ctx) => { - const lastUsedLoginMethod = config.customResolveMethod(ctx); + const lastUsedLoginMethod = + config.customResolveMethod?.(ctx) ?? defaultResolveMethod(ctx); if (lastUsedLoginMethod) { const setCookie = ctx.context.responseHeaders?.get("set-cookie"); const sessionTokenName =