feat(swift): Epic 4 - Navigation & Auth compleet
E4.S1 - Login form uitbreiden: - Interface selector (Swift/Klassiek) toegevoegd - Visuele keuze met icons (Layout/Zap) - Redirect naar gekozen interface na login E4.S2 - Preference opslag: - updateInterfacePreference() in lib/auth/client.ts - getInterfacePreference() voor ophalen - Opslag in user_metadata.preferred_interface E4.S3 - Redirect middleware: - /epd → redirect naar preferred interface - /login → redirect naar preferred interface (als ingelogd) - Default: klassiek (/epd/clients) E4.S4 - Fallback Picker: - FallbackPicker component voor lage confidence - Grid met 3 opties (Notitie, Zoeken, Overdracht) - Keyboard shortcuts [1], [2], [3] - Toont originele input voor context Voortgang: Epic 4 compleet (8 SP) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,9 +4,7 @@ import { useState } from 'react'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import Link from 'next/link'
|
||||
import { Eye, EyeOff, Zap, Layout } from 'lucide-react'
|
||||
import { loginWithPassword, signUpWithPassword } from '@/lib/auth/client'
|
||||
|
||||
type InterfacePreference = 'swift' | 'klassiek'
|
||||
import { loginWithPassword, signUpWithPassword, updateInterfacePreference, type InterfacePreference } from '@/lib/auth/client'
|
||||
|
||||
export function LoginForm() {
|
||||
const router = useRouter()
|
||||
@@ -38,6 +36,8 @@ export function LoginForm() {
|
||||
|
||||
const result = await signUpWithPassword(email, password)
|
||||
if (result.session) {
|
||||
// Save interface preference after successful signup
|
||||
await updateInterfacePreference(interfacePreference)
|
||||
setMessage({ type: 'success', text: 'Account aangemaakt! Je wordt doorgestuurd...' })
|
||||
setTimeout(() => {
|
||||
router.push(getRedirectPath())
|
||||
@@ -50,6 +50,8 @@ export function LoginForm() {
|
||||
}
|
||||
} else {
|
||||
await loginWithPassword(email, password)
|
||||
// Save interface preference after successful login
|
||||
await updateInterfacePreference(interfacePreference)
|
||||
setMessage({ type: 'success', text: 'Ingelogd! Je wordt doorgestuurd...' })
|
||||
setTimeout(() => {
|
||||
router.push(getRedirectPath())
|
||||
@@ -57,6 +59,8 @@ export function LoginForm() {
|
||||
}
|
||||
} catch (error: any) {
|
||||
if (error.code === 'user_already_registered' && error.data?.session) {
|
||||
// Save interface preference for auto-logged in user
|
||||
await updateInterfacePreference(interfacePreference)
|
||||
setMessage({ type: 'success', text: 'Dit emailadres bestaat al. Je bent nu ingelogd!' })
|
||||
setTimeout(() => {
|
||||
router.push(getRedirectPath())
|
||||
@@ -90,6 +94,8 @@ export function LoginForm() {
|
||||
setLoading(true)
|
||||
try {
|
||||
await loginWithPassword('demo@mini-ecd.demo', 'Demo2024!')
|
||||
// Save interface preference for demo user
|
||||
await updateInterfacePreference(interfacePreference)
|
||||
router.push(getRedirectPath())
|
||||
} catch (error: any) {
|
||||
setMessage({ type: 'error', text: 'Demo login mislukt. Probeer handmatig in te loggen.' })
|
||||
|
||||
Reference in New Issue
Block a user