)}
diff --git a/docs/RELEASE_AUTH_IMPROVEMENTS.md b/docs/RELEASE_AUTH_IMPROVEMENTS.md
new file mode 100644
index 0000000..1014e58
--- /dev/null
+++ b/docs/RELEASE_AUTH_IMPROVEMENTS.md
@@ -0,0 +1,67 @@
+# Release Notes - Verbeterde Authenticatie Flow
+
+**Datum:** 19 November 2025
+**Versie:** 1.1.0
+
+---
+
+## 🔐 Authenticatie Verbeteringen
+
+We hebben de login en registratie ervaring flink verbeterd met duidelijkere feedback en een gebruiksvriendelijkere interface.
+
+### ✨ Nieuwe Features
+
+#### 1. **Wachtwoord Zichtbaarheid Toggle**
+- Toon/verberg je wachtwoord met een klik op het oog-icoon
+- Werkt voor zowel wachtwoord als bevestig wachtwoord velden
+- Maakt het makkelijker om typefouten te voorkomen
+
+#### 2. **Verbeterde Foutmeldingen**
+Alle foutmeldingen zijn nu duidelijker en helpen je beter op weg:
+
+| Situatie | Nieuwe Melding |
+|----------|----------------|
+| Login met onjuist wachtwoord | "Email of wachtwoord is onjuist. Controleer je gegevens en probeer opnieuw." |
+| Registratie met bestaand email | "Dit emailadres is al geregistreerd. Probeer in te loggen." |
+| Email niet geverifieerd | "Je email is nog niet geverifieerd. Check je inbox voor de verificatie link." |
+
+#### 3. **Automatische Account Herkenning**
+- Probeer je te registreren met een bestaand email? Je wordt automatisch naar de login modus gestuurd
+- Als het systeem detecteert dat je al bent ingelogd met dezelfde credentials, word je direct doorgestuurd
+
+#### 4. **Wachtwoord Vergeten Flow**
+- De "Wachtwoord vergeten?" link werkt nu correct
+- Vraag eenvoudig een reset link aan via je email
+- Reset links zijn 1 uur geldig
+
+### 🛠️ Technische Verbeteringen
+
+- **Duplicate Email Detectie**: Auth hook met fallback mechanisme voorkomt verwarrende situaties
+- **Security**: Geen email enumeration - je kunt niet zien welke emails geregistreerd zijn
+- **Middleware Fix**: Reset password routes zijn nu correct toegankelijk voor niet-ingelogde gebruikers
+
+### 🎨 UI/UX Verbeteringen
+
+- Consistente Nederlandse taalgebruik door de hele flow
+- Visuele feedback bij hover op password toggle
+- Toegankelijke aria-labels voor screen readers
+- Smooth transitions en loading states
+
+---
+
+## 🚀 Voor Ontwikkelaars
+
+De volgende functies zijn toegevoegd aan `lib/auth/client.ts`:
+
+- Verbeterde error handling met custom error codes
+- `invalid_credentials` error code voor login failures
+- `user_already_registered` error code met optionele auto-login data
+- `email_not_confirmed` error code voor verificatie issues
+
+Middleware is uitgebreid met publieke routes:
+- `/reset-password` - Wachtwoord reset aanvragen
+- `/update-password` - Nieuw wachtwoord instellen
+
+---
+
+**Veel plezier met de verbeterde authenticatie ervaring!** 🎉
diff --git a/lib/auth/client.ts b/lib/auth/client.ts
index 2c28e17..019d128 100644
--- a/lib/auth/client.ts
+++ b/lib/auth/client.ts
@@ -158,7 +158,29 @@ export async function loginWithPassword(email: string, password: string) {
password
})
- if (error) throw error
+ if (error) {
+ // Provide user-friendly error messages
+ const errorMessage = error.message?.toLowerCase() || ''
+
+ // Invalid login credentials (account doesn't exist OR wrong password)
+ if (errorMessage.includes('invalid login credentials') ||
+ errorMessage.includes('invalid credentials') ||
+ error.status === 400) {
+ const friendlyError = new Error('Email of wachtwoord is onjuist. Controleer je gegevens en probeer opnieuw.')
+ ;(friendlyError as any).code = 'invalid_credentials'
+ throw friendlyError
+ }
+
+ // Email not confirmed
+ if (errorMessage.includes('email not confirmed')) {
+ const friendlyError = new Error('Je email is nog niet geverifieerd. Check je inbox voor de verificatie link.')
+ ;(friendlyError as any).code = 'email_not_confirmed'
+ throw friendlyError
+ }
+
+ // Generic error fallback
+ throw error
+ }
return {
success: true,
diff --git a/middleware.ts b/middleware.ts
index fbb1466..63a965d 100644
--- a/middleware.ts
+++ b/middleware.ts
@@ -46,6 +46,8 @@ export async function middleware(request: NextRequest) {
const publicRoutes = [
'/',
'/login',
+ '/reset-password',
+ '/update-password',
'/auth/callback',
'/contact',
'/api/leads',