From 31dec292feb13756ec5aa975a21818d48bff6296 Mon Sep 17 00:00:00 2001 From: Jakob Wennberg Date: Mon, 2 Mar 2026 19:12:33 +0100 Subject: [PATCH] fix: CSP blocking hydration and Enable Banking widget, stale auth cleanup - Add 'unsafe-inline' to script-src so Next.js hydration scripts run - Whitelist *.enablebanking.com in CSP (script, style, connect, img) - Allow HTTPS images broadly for third-party bank logos - Clear stale refresh tokens in middleware (skip on /auth callback) - Fix login button disabled on browser autofill by reading email from form DOM Co-Authored-By: Claude Opus 4.6 --- app/(auth)/login/page.tsx | 13 ++++++++++--- lib/supabase/middleware.ts | 8 ++++++++ next.config.ts | 8 ++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx index 586614f7..1eb9f060 100644 --- a/app/(auth)/login/page.tsx +++ b/app/(auth)/login/page.tsx @@ -17,13 +17,17 @@ export default function LoginPage() { const { toast } = useToast() const supabase = createClient() - const handleLogin = async (e: React.FormEvent) => { + const handleLogin = async (e: React.FormEvent) => { e.preventDefault() setIsLoading(true) + // Read from DOM to handle browser autofill (which may not trigger onChange) + const formData = new FormData(e.currentTarget) + const emailValue = (formData.get('email') as string) || email + try { const { error } = await supabase.auth.signInWithOtp({ - email, + email: emailValue, options: { emailRedirectTo: `${window.location.origin}/auth/callback`, }, @@ -38,6 +42,7 @@ export default function LoginPage() { return } + setEmail(emailValue) setIsEmailSent(true) toast({ title: 'E-post skickad!', @@ -101,7 +106,9 @@ export default function LoginPage() { setEmail(e.target.value)} @@ -112,7 +119,7 @@ export default function LoginPage() {