Authentication Guide
Panduan menggunakan sistem authentication di aplikasi.
🔐 Metode Login
Aplikasi mendukung 2 metode login:
- Email/Password - Register dengan email dan password
- Google OAuth - Login dengan satu klik menggunakan Google
📧 Email/Password Auth
Register
- Buka
/register - Isi form:
- Name (min 2 characters)
- Email (valid format)
- Password (min 8, 1 uppercase, 1 number)
- Submit
- Check email untuk verification link
- Click link verifikasi
- Login di
/login
Password Requirements
- Minimum 8 characters
- At least 1 uppercase letter
- At least 1 number
- Contoh valid:
MyP@ssw0rd
Forgot Password
- Klik "Forgot password?" di halaman login
- Masukkan email
- Check email untuk reset link
- Klik link dan masukkan password baru
- Login dengan password baru
Email Verification
Kenapa perlu verifikasi?
- ✅ Mencegah spam accounts
- ✅ Memastikan email valid
- ✅ Bisa reset password
Resend Verification:
- Login (jika email belum verified, akan diarahkan)
- Klik "Resend verification email"
- Check inbox/spam
🔵 Google OAuth
Login dengan Google
- Buka
/login - Klik "Continue with Google"
- Pilih akun Google
- Otomatis login dan redirect ke dashboard
Keuntungan:
- ⚡ Cepat - tidak perlu isi form
- 🔒 Aman - powered by Google security
- 📧 Otomatis verified - Google sudah verifikasi email
Link Google ke Account Existing
Jika Anda sudah punya account dengan email yang sama:
- Login dengan Google
- Sistem akan link Google ke account existing
- Next time bisa login dengan Google atau password
🛡️ Security Features
Password Hashing
- Algorithm: PBKDF2 (industry standard)
- Salt: Random 16 bytes
- Iterations: 100,000
- Hash stored: salt + derived key
Session Management
- HTTP-only cookies (tidak bisa diakses JavaScript)
- Secure flag (HTTPS only)
- Auto-expire (configurable)
- Refresh mechanism
Rate Limiting
- Email verification: 1 menit interval
- Login attempts: Cloudflare protection
- Reset password: 1 token active per user
🐛 Troubleshooting Auth
| Masalah | Solusi |
|---|---|
| "Email already registered" | Gunakan email lain atau login |
| "Invalid email or password" | Check caps lock, atau reset password |
| "Email not verified" | Check inbox/spam untuk verification email |
| "Please use Google login" | Email ini dibuat via OAuth, login dengan Google |
| Token expired | Minta reset password baru |
📁 Files Terkait
src/
├── lib/
│ └── auth/
│ ├── lucia.ts # Session management
│ ├── google.ts # Google OAuth
│ └── password.ts # Password hashing
└── routes/
├── login/
├── register/
├── forgot-password/
├── reset-password/
└── auth/
├── login/
├── register/
├── google/
└── verify-email/