diff --git a/.claude/settings.local.json b/.claude/settings.local.json index e8d4cc1..2ecfdf4 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -50,7 +50,8 @@ "WebFetch(domain:docs.cidaas.com)", "WebFetch(domain:articles.cidaas.de)", "WebFetch(domain:pre-release-docs.cidaas.com)", - "mcp__playwright__browser_console_messages" + "mcp__playwright__browser_console_messages", + "WebFetch(domain:nuxt.com)" ], "deny": [], "ask": [] diff --git a/CLAUDE.md b/CLAUDE.md index f61bea0..6828a1c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -63,6 +63,9 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - **All code comments MUST be written in English** - User-facing content (UI text, emails) should be in German +- **User communication MUST use informal "Du" form** (not formal "Sie" form) + - Examples: "Dein Konto", "Melde dich an", "Bestätige deine E-Mail" + - This applies to all UI text, form labels, buttons, messages, and emails - Documentation should be in German (PRD, README) ## Tech Stack @@ -222,7 +225,7 @@ Ein Playwright MCP Server ist installiert und verfügbar für: **Wann nutzen:** -- Nach Implementierung neuer UI-Komponenten +- Nach Implementierung oder Änderung von UI-Komponenten - Bei Layout-Anpassungen (besonders mobile vs. desktop) - Zum Testen von Formularen und Interaktionen - Zur Validierung des gesamten Checkout-Flows @@ -880,6 +883,8 @@ For complete implementation with all utilities (PKCE generator, Cidaas API clien - **PRD:** See `docs/PRD.md` for complete requirements - **Tech Stack:** See `docs/TECH_STACK.md` for technology decisions - **Architecture:** See `docs/ARCHITECTURE.md` for system design and data flows +- **experimenta Info:** See `docs/EXPERIMENTA_INFO.md` for company information (address, opening hours, legal links, contact details) + ## Deployment diff --git a/app/components/Auth/LoginForm.vue b/app/components/Auth/LoginForm.vue index b12283a..d271f7a 100644 --- a/app/components/Auth/LoginForm.vue +++ b/app/components/Auth/LoginForm.vue @@ -4,13 +4,14 @@ import { z } from 'zod' import { useForm } from 'vee-validate' import { toTypedSchema } from '@vee-validate/zod' +import { AlertCircle, AlertTriangle, Loader2, ShieldCheck, ShieldAlert } from 'lucide-vue-next' const { login } = useAuth() // Validation schema const loginSchema = toTypedSchema( z.object({ - email: z.string().email('Bitte geben Sie eine gültige E-Mail-Adresse ein'), + email: z.string().email('Bitte gib eine gültige E-Mail-Adresse ein'), password: z.string().min(8, 'Passwort muss mindestens 8 Zeichen lang sein'), }) ) @@ -33,19 +34,30 @@ const onSubmit = handleSubmit(async (values) => { } catch (error: any) { console.error('Login error:', error) // Error message is now directly in error.message (thrown by useAuth composable) - submitError.value = error.message || 'Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut.' + submitError.value = error.message || 'Anmeldung fehlgeschlagen. Bitte versuche es erneut.' } }) + +// Is the connection secure? +const isSecureConnection = computed(() => { + return window.location.protocol === 'https:' +}) diff --git a/app/components/Auth/RegisterForm.vue b/app/components/Auth/RegisterForm.vue index 2c1fcd7..18fa88f 100644 --- a/app/components/Auth/RegisterForm.vue +++ b/app/components/Auth/RegisterForm.vue @@ -4,13 +4,14 @@ import { z } from 'zod' import { useForm } from 'vee-validate' import { toTypedSchema } from '@vee-validate/zod' +import { AlertCircle, CheckCircle, Loader2 } from 'lucide-vue-next' const { register } = useAuth() // Validation schema const registerSchema = toTypedSchema( z.object({ - email: z.string().email('Bitte geben Sie eine gültige E-Mail-Adresse ein'), + email: z.string().email('Bitte gib eine gültige E-Mail-Adresse ein'), password: z .string() .min(8, 'Das Passwort muss mindestens 8 Zeichen lang sein') @@ -51,7 +52,7 @@ const onSubmit = handleSubmit(async (values) => { if (error.status === 409) { submitError.value = 'Diese E-Mail-Adresse ist bereits registriert.' } else { - submitError.value = error.data?.message || 'Registrierung fehlgeschlagen. Bitte versuchen Sie es erneut.' + submitError.value = error.data?.message || 'Registrierung fehlgeschlagen. Bitte versuche es erneut.' } } }) @@ -60,18 +61,18 @@ const onSubmit = handleSubmit(async (values) => {