Authentication
Overview
Section titled “Overview”The authentication module handles user registration, login, and password management using Firebase Authentication via the svelte-firekit library.
Module path: src/lib/modules/auth/
Authentication Methods
Section titled “Authentication Methods”| Method | Function | Description |
|---|---|---|
| Google OAuth | firekitAuth.signInWithGoogle() | One-click Google sign-in |
| Email/Password | firekitAuth.signInWithEmail() | Traditional email login |
| Registration | firekitAuth.registerWithEmail() | New account creation |
| Password Reset | firekitAuth.sendPasswordReset() | Email-based reset |
Routes
Section titled “Routes”| Route | File | Purpose |
|---|---|---|
/sign-in | src/routes/(auth)/sign-in/+page.svelte | Login page |
/sign-up | src/routes/(auth)/sign-up/+page.svelte | Registration page |
/forgot-password | src/routes/(auth)/forgot-password/+page.svelte | Password reset |
The (auth) layout uses AuthGuard with requireAuth={false} and redirects authenticated users to /.
Components
Section titled “Components”| Component | File | Purpose |
|---|---|---|
sign-in-form.svelte | modules/auth/components/ | Email/password login form |
sign-up-form.svelte | modules/auth/components/ | Registration form with name, email, terms |
google-sign-in.svelte | modules/auth/components/ | Google OAuth button |
reset-password-form.svelte | modules/auth/components/ | Password reset form |
Validation Schemas
Section titled “Validation Schemas”All schemas use Valibot:
Sign-In Schema
Section titled “Sign-In Schema”{ email: string // required, valid email password: string // required, min 8 chars}Sign-Up Schema
Section titled “Sign-Up Schema”{ firstName: string // required, min 1 char lastName: string // required, min 1 char email: string // required, valid email password: string // required, min 8 chars agreeToTerms: boolean // must be true}Reset Password Schema
Section titled “Reset Password Schema”{ email: string // required, valid email}Post-Authentication Actions
Section titled “Post-Authentication Actions”On Sign-Up
Section titled “On Sign-Up”- Firebase Auth account created
- User document created at
users/{uid}in Firestore - Display name generated from first + last name
- Firebase Analytics events tracked (
sign_up, user properties) - Referral signup processing attempted
- Redirect to
/
On Sign-In
Section titled “On Sign-In”- Firebase Auth session established
- New user detection via account creation timestamp
- Referral processing for new Google sign-in users
- Analytics events tracked (
sign_in, user properties) - Redirect to
/
Analytics Integration
Section titled “Analytics Integration”All auth forms track comprehensive analytics events:
sign_in_attempt/sign_in/sign_in_failedsign_up/sign_up_failedform_interaction(focus, blur, input, checkbox events)- User properties: type, method, dates, display name, email domain
Related Stores
Section titled “Related Stores”userStore(src/lib/stores/user-store.svelte.ts) - Current user stateuserManager(src/lib/stores/user-manager.svelte.ts) - User data management
Sign-Out
Section titled “Sign-Out”Implemented in the navigation component (nav-user.svelte):
await firekitAuth.signOut();