From 6f7613818b2c33066f9c6cd01da2c54912a49e82 Mon Sep 17 00:00:00 2001 From: Aymeric Rabot Date: Thu, 19 Feb 2026 01:29:30 -0500 Subject: [PATCH] feat: account linking for magic link + Google, last login method hint - Move account linking config out of Google conditional so it's always active - Trust both 'google' and 'email' providers for automatic account linking - Add lastLoginMethod plugin to track how users last signed in - Show "Last signed in with Google/email link" hint in sign-in dialog Co-Authored-By: Claude Opus 4.6 (1M context) --- .../community/components/sign-in-dialog.tsx | 14 ++++++++++++++ packages/auth/src/client.ts | 4 ++-- packages/auth/src/server.ts | 17 ++++++++++------- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/apps/editor/features/community/components/sign-in-dialog.tsx b/apps/editor/features/community/components/sign-in-dialog.tsx index 90616c4b..d5c7067b 100644 --- a/apps/editor/features/community/components/sign-in-dialog.tsx +++ b/apps/editor/features/community/components/sign-in-dialog.tsx @@ -36,6 +36,11 @@ function GoogleIcon({ className }: { className?: string }) { /** * SignInDialog - Authentication dialog with Google OAuth and magic link */ +const LOGIN_METHOD_LABELS: Record = { + google: 'Google', + 'magic-link': 'email link', +} + export function SignInDialog({ open, onOpenChange }: SignInDialogProps) { const [email, setEmail] = useState('') const [isLoading, setIsLoading] = useState(false) @@ -43,6 +48,9 @@ export function SignInDialog({ open, onOpenChange }: SignInDialogProps) { const [error, setError] = useState(null) const [success, setSuccess] = useState(false) + const lastMethod = authClient.getLastUsedLoginMethod?.() + const lastMethodLabel = lastMethod ? LOGIN_METHOD_LABELS[lastMethod] ?? lastMethod : null + const handleGoogleSignIn = async () => { setError(null) setIsGoogleLoading(true) @@ -134,6 +142,12 @@ export function SignInDialog({ open, onOpenChange }: SignInDialogProps) { ) : (
+ {lastMethodLabel && ( +

+ Last signed in with {lastMethodLabel} +

+ )} + {/* Google Sign-In */}