diff --git a/apps/calendar/apps/web/src/lib/stores/auth.svelte.ts b/apps/calendar/apps/web/src/lib/stores/auth.svelte.ts index 229061c02..00cfed445 100644 --- a/apps/calendar/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/calendar/apps/web/src/lib/stores/auth.svelte.ts @@ -111,16 +111,16 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { + async signUp(email: string, password: string, name: string) { const authService = await getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/calendar/apps/web/src/routes/(auth)/register/+page.svelte b/apps/calendar/apps/web/src/routes/(auth)/register/+page.svelte index d1373be4c..b2851645c 100644 --- a/apps/calendar/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/calendar/apps/web/src/routes/(auth)/register/+page.svelte @@ -12,8 +12,8 @@ // Get translations based on current locale const translations = $derived(getRegisterTranslations($locale || 'de')); - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/apps/chat/apps/web/src/lib/stores/auth.svelte.ts b/apps/chat/apps/web/src/lib/stores/auth.svelte.ts index 19029d8c0..696e92b2e 100644 --- a/apps/chat/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/chat/apps/web/src/lib/stores/auth.svelte.ts @@ -110,16 +110,16 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { + async signUp(email: string, password: string, name: string) { const authService = await getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/chat/apps/web/src/routes/(auth)/register/+page.svelte b/apps/chat/apps/web/src/routes/(auth)/register/+page.svelte index 35dc40839..f161b442a 100644 --- a/apps/chat/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/chat/apps/web/src/routes/(auth)/register/+page.svelte @@ -12,8 +12,8 @@ // Get translations based on current locale const translations = $derived(getRegisterTranslations($locale || 'de')); - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/apps/clock/apps/web/src/lib/stores/auth.svelte.ts b/apps/clock/apps/web/src/lib/stores/auth.svelte.ts index d6f630e3b..0178b69a0 100644 --- a/apps/clock/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/clock/apps/web/src/lib/stores/auth.svelte.ts @@ -110,16 +110,16 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { + async signUp(email: string, password: string, name: string) { const authService = await getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/clock/apps/web/src/routes/(auth)/register/+page.svelte b/apps/clock/apps/web/src/routes/(auth)/register/+page.svelte index 7038c52d4..6432a32af 100644 --- a/apps/clock/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/clock/apps/web/src/routes/(auth)/register/+page.svelte @@ -10,8 +10,8 @@ // Get translations based on current locale const translations = $derived(getRegisterTranslations($locale || 'de')); - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/apps/contacts/apps/web/src/lib/stores/auth.svelte.ts b/apps/contacts/apps/web/src/lib/stores/auth.svelte.ts index 57581518f..3f9bce195 100644 --- a/apps/contacts/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/contacts/apps/web/src/lib/stores/auth.svelte.ts @@ -110,16 +110,16 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { + async signUp(email: string, password: string, name: string) { const authService = await getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/contacts/apps/web/src/routes/(auth)/register/+page.svelte b/apps/contacts/apps/web/src/routes/(auth)/register/+page.svelte index 293926148..45303b635 100644 --- a/apps/contacts/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/contacts/apps/web/src/routes/(auth)/register/+page.svelte @@ -11,8 +11,8 @@ const translations = $derived(getRegisterTranslations($locale || 'de')); - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/apps/manacore/apps/web/src/lib/stores/auth.svelte.ts b/apps/manacore/apps/web/src/lib/stores/auth.svelte.ts index 36dd5edfc..54f1f397f 100644 --- a/apps/manacore/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/manacore/apps/web/src/lib/stores/auth.svelte.ts @@ -116,19 +116,20 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password and name * @param email User email * @param password User password + * @param name User's display name * @param referralCode Optional referral code for bonus credits */ - async signUp(email: string, password: string, referralCode?: string) { + async signUp(email: string, password: string, name: string, referralCode?: string) { const authService = await getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password, referralCode); + const result = await authService.signUp(email, password, name, referralCode); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/manacore/apps/web/src/routes/(auth)/register/+page.svelte b/apps/manacore/apps/web/src/routes/(auth)/register/+page.svelte index 71979b19e..37d3f8a6e 100644 --- a/apps/manacore/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/manacore/apps/web/src/routes/(auth)/register/+page.svelte @@ -9,8 +9,13 @@ // Get referral code from URL if present let initialReferralCode = $derived($page.url.searchParams.get('ref') || ''); - async function handleSignUp(email: string, password: string, referralCode?: string) { - return authStore.signUp(email, password, referralCode); + async function handleSignUp( + email: string, + password: string, + name: string, + referralCode?: string + ) { + return authStore.signUp(email, password, name, referralCode); } async function handleValidateReferralCode(code: string) { diff --git a/apps/manadeck/apps/web/src/lib/stores/auth.svelte.ts b/apps/manadeck/apps/web/src/lib/stores/auth.svelte.ts index 40107f7ca..22213334c 100644 --- a/apps/manadeck/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/manadeck/apps/web/src/lib/stores/auth.svelte.ts @@ -92,10 +92,10 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { - const result = await authService.signUp(email, password); + async signUp(email: string, password: string, name: string) { + const result = await authService.signUp(email, password, name); if (result.success && !result.needsVerification) { const userData = await authService.getUserFromToken(); user = toManaUser(userData); diff --git a/apps/manadeck/apps/web/src/routes/(auth)/register/+page.svelte b/apps/manadeck/apps/web/src/routes/(auth)/register/+page.svelte index fb7cd7e20..b89cbf4ad 100644 --- a/apps/manadeck/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/manadeck/apps/web/src/routes/(auth)/register/+page.svelte @@ -5,8 +5,8 @@ import AppSlider from '$lib/components/AppSlider.svelte'; import { authStore } from '$lib/stores/auth.svelte'; - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/apps/picture/apps/web/src/lib/stores/auth.svelte.ts b/apps/picture/apps/web/src/lib/stores/auth.svelte.ts index 60aac106e..1a23dddf4 100644 --- a/apps/picture/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/picture/apps/web/src/lib/stores/auth.svelte.ts @@ -115,7 +115,7 @@ export const authStore = { } }, - async signUp(email: string, password: string): Promise { + async signUp(email: string, password: string, name: string): Promise { const authService = await getAuthService(); if (!authService) { return { success: false, error: 'Auth service not available' }; @@ -123,7 +123,7 @@ export const authStore = { try { loading = true; - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (result.success) { // Auto-login after signup diff --git a/apps/todo/apps/web/src/lib/stores/auth.svelte.ts b/apps/todo/apps/web/src/lib/stores/auth.svelte.ts index 817c251fd..c483ad3ea 100644 --- a/apps/todo/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/todo/apps/web/src/lib/stores/auth.svelte.ts @@ -143,16 +143,16 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { + async signUp(email: string, password: string, name: string) { const authService = getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/todo/apps/web/src/routes/(auth)/register/+page.svelte b/apps/todo/apps/web/src/routes/(auth)/register/+page.svelte index b8f3c7963..06e57922a 100644 --- a/apps/todo/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/todo/apps/web/src/routes/(auth)/register/+page.svelte @@ -11,8 +11,8 @@ // Get translations based on current locale const translations = $derived(getRegisterTranslations($locale || 'de')); - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/apps/zitare/apps/web/src/lib/stores/auth.svelte.ts b/apps/zitare/apps/web/src/lib/stores/auth.svelte.ts index 03771a80c..fff003c0d 100644 --- a/apps/zitare/apps/web/src/lib/stores/auth.svelte.ts +++ b/apps/zitare/apps/web/src/lib/stores/auth.svelte.ts @@ -131,16 +131,16 @@ export const authStore = { }, /** - * Sign up with email and password + * Sign up with email, password, and name */ - async signUp(email: string, password: string) { + async signUp(email: string, password: string, name: string) { const authService = getAuthService(); if (!authService) { return { success: false, error: 'Auth not available on server', needsVerification: false }; } try { - const result = await authService.signUp(email, password); + const result = await authService.signUp(email, password, name); if (!result.success) { return { success: false, error: result.error || 'Signup failed', needsVerification: false }; diff --git a/apps/zitare/apps/web/src/routes/(auth)/register/+page.svelte b/apps/zitare/apps/web/src/routes/(auth)/register/+page.svelte index 6e46f40a0..5b31e3c25 100644 --- a/apps/zitare/apps/web/src/routes/(auth)/register/+page.svelte +++ b/apps/zitare/apps/web/src/routes/(auth)/register/+page.svelte @@ -10,8 +10,8 @@ const translations = $derived(getRegisterTranslations($locale || 'de')); - async function handleSignUp(email: string, password: string) { - return authStore.signUp(email, password); + async function handleSignUp(email: string, password: string, name: string) { + return authStore.signUp(email, password, name); } diff --git a/games/voxelava/apps/web/src/lib/components/auth/Register.svelte b/games/voxelava/apps/web/src/lib/components/auth/Register.svelte index 0c73cf115..330195ff4 100644 --- a/games/voxelava/apps/web/src/lib/components/auth/Register.svelte +++ b/games/voxelava/apps/web/src/lib/components/auth/Register.svelte @@ -6,6 +6,7 @@ const dispatch = createEventDispatcher(); // Formular-Zustände + let name = ''; let email = ''; let password = ''; let confirmPassword = ''; @@ -16,11 +17,16 @@ // Formular absenden async function handleSubmit() { // Validierung - if (!email || !password || !confirmPassword) { + if (!name || !email || !password || !confirmPassword) { errorMessage = 'Bitte fülle alle Felder aus.'; return; } + if (name.length < 2) { + errorMessage = 'Der Name muss mindestens 2 Zeichen lang sein.'; + return; + } + if (password !== confirmPassword) { errorMessage = 'Die Passwörter stimmen nicht überein.'; return; @@ -35,12 +41,13 @@ isLoading = true; errorMessage = ''; - const success = await AuthService.register(email, password); + const success = await AuthService.register(email, password, name); if (success) { successMessage = 'Registrierung erfolgreich! Bitte überprüfe deine E-Mails, um dein Konto zu bestätigen.'; // Formular zurücksetzen + name = ''; email = ''; password = ''; confirmPassword = ''; @@ -83,6 +90,19 @@ {/if}
+
+ + +
+
; /** Primary color (hex) */ primaryColor: string; - /** Sign up function (with optional referral code) */ - onSignUp: (email: string, password: string, referralCode?: string) => Promise; + /** Sign up function (with name and optional referral code) */ + onSignUp: ( + email: string, + password: string, + name: string, + referralCode?: string + ) => Promise; /** Navigation function */ goto: (path: string) => void; /** Success redirect path */ @@ -132,6 +143,7 @@ let error = $state(null); let success = $state(false); let needsVerification = $state(false); + let name = $state(''); let email = $state(''); let password = $state(''); let confirmPassword = $state(''); @@ -249,6 +261,18 @@ success = false; // Validation + if (!name) { + error = t.nameRequired; + loading = false; + return; + } + + if (name.length < 2) { + error = t.nameTooShort; + loading = false; + return; + } + if (!email) { error = t.emailRequired; loading = false; @@ -293,7 +317,7 @@ // Pass referral code if valid const validReferralCode = referralValidation?.valid ? referralCode : undefined; - const result = await onSignUp(email, password, validReferralCode); + const result = await onSignUp(email, password, name, validReferralCode); loading = false; @@ -301,6 +325,7 @@ if (result.needsVerification) { needsVerification = true; success = true; + name = ''; password = ''; confirmPassword = ''; } else { @@ -407,6 +432,24 @@ }} class="pb-4" > +
+ +
+
(showPassword = !showPassword)} - class="absolute inset-y-0 right-0 flex items-center justify-center w-14 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors" + class="absolute top-1/2 -translate-y-1/2 right-4 flex items-center justify-center transition-colors" + style="color: {isDark ? 'rgba(255, 255, 255, 0.5)' : 'rgba(0, 0, 0, 0.5)'};" aria-label={showPassword ? t.hidePassword : t.showPassword} > {#if showPassword} @@ -476,7 +520,8 @@