407 lines
10 KiB
Markdown
407 lines
10 KiB
Markdown
# Dedicated Auth Pages - Quick Start Guide
|
|
|
|
## What Changed
|
|
|
|
### Before
|
|
- Modal popup appeared on same page
|
|
- Limited mobile experience
|
|
- Popup could be blocked
|
|
|
|
### After ✨
|
|
- Dedicated `/signin` and `/signup` pages
|
|
- Professional, modern design
|
|
- No popup blocking issues
|
|
- Better mobile experience
|
|
- Works like professional sites (Google, GitHub, etc.)
|
|
|
|
---
|
|
|
|
## URLs
|
|
|
|
| Page | URL |
|
|
|------|-----|
|
|
| **Sign In** | `http://localhost:3001/signin` |
|
|
| **Sign Up** | `http://localhost:3001/signup` |
|
|
|
|
---
|
|
|
|
## Page Design
|
|
|
|
### Sign-In Page (`/signin`)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ LEFT SIDE (Form) │ RIGHT SIDE (Gradient) │
|
|
├──────────────────────────┼──────────────────────────┤
|
|
│ │ │
|
|
│ 👤 Sign In │ Beautiful gradient │
|
|
│ Welcome back! │ blue → purple │
|
|
│ │ │
|
|
│ Email input │ Animation elements │
|
|
│ Password input │ │
|
|
│ [Sign In Button] │ Text: "Welcome Back" │
|
|
│ │ │
|
|
│ ─── Or continue with ─── │ │
|
|
│ │ │
|
|
│ [Google] [GitHub] │ │
|
|
│ [Facebook] [Discord] │ │
|
|
│ │ │
|
|
│ Don't have account? │ │
|
|
│ → Sign Up link │ │
|
|
│ │ │
|
|
└──────────────────────────┴──────────────────────────┘
|
|
```
|
|
|
|
### Sign-Up Page (`/signup`)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────┐
|
|
│ LEFT SIDE (Form) │ RIGHT SIDE (Gradient) │
|
|
├──────────────────────────┼──────────────────────────┤
|
|
│ │ │
|
|
│ 🚀 Sign Up │ Beautiful gradient │
|
|
│ Start your journey │ cyan → purple │
|
|
│ │ │
|
|
│ First Name | Last Name │ Animation elements │
|
|
│ Email input │ │
|
|
│ Password input │ Text: "Join Community" │
|
|
│ (with strength check) │ │
|
|
│ Confirm Password input │ │
|
|
│ [Sign Up Button] │ │
|
|
│ │ │
|
|
│ ─── Or sign up with ─── │ │
|
|
│ │ │
|
|
│ [Google] [GitHub] │ │
|
|
│ [Facebook] [Discord] │ │
|
|
│ │ │
|
|
│ Already have account? │ │
|
|
│ → Sign In link │ │
|
|
│ │ │
|
|
└──────────────────────────┴──────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Authentication Flows
|
|
|
|
### Email/Password Sign-In
|
|
```
|
|
User
|
|
↓
|
|
Visit /signin
|
|
↓
|
|
Enter email & password
|
|
↓
|
|
Click "Sign In"
|
|
↓
|
|
/api/auth/login processes
|
|
↓
|
|
✓ User authenticated
|
|
↓
|
|
Redirect to /account/webinars
|
|
(or custom redirect URL)
|
|
```
|
|
|
|
### OAuth Sign-In (e.g., Google)
|
|
```
|
|
User
|
|
↓
|
|
Visit /signin
|
|
↓
|
|
Click "Continue with Google"
|
|
↓
|
|
Redirect to Google login page
|
|
↓
|
|
User logs in with Google
|
|
↓
|
|
Google redirects back with auth code
|
|
↓
|
|
/auth/google/callback processes
|
|
↓
|
|
/auth-callback verifies session
|
|
↓
|
|
✓ User authenticated
|
|
↓
|
|
Redirect to /account/webinars
|
|
(or custom redirect URL)
|
|
```
|
|
|
|
### Email/Password Sign-Up
|
|
```
|
|
User
|
|
↓
|
|
Visit /signup
|
|
↓
|
|
Fill form:
|
|
- First Name
|
|
- Last Name
|
|
- Email
|
|
- Password (with strength check)
|
|
- Confirm Password
|
|
↓
|
|
Click "Sign Up"
|
|
↓
|
|
/api/auth/register creates account
|
|
↓
|
|
✓ Account created & authenticated
|
|
↓
|
|
Redirect to /account/webinars
|
|
(or custom redirect URL)
|
|
```
|
|
|
|
---
|
|
|
|
## Password Strength Requirements (Sign-Up)
|
|
|
|
As you type, you'll see real-time feedback:
|
|
|
|
```
|
|
Password: Secure123
|
|
|
|
✅ 8-20 characters (12 characters)
|
|
✅ Uppercase letter (S, P)
|
|
✅ Number (1, 2, 3)
|
|
✅ No spaces (none)
|
|
|
|
→ Password is valid! Click "Sign Up"
|
|
```
|
|
|
|
Required:
|
|
- 8-20 characters
|
|
- At least 1 uppercase letter
|
|
- At least 1 number
|
|
- No spaces
|
|
|
|
---
|
|
|
|
## Custom Redirect URLs
|
|
|
|
### After Sign-In with Redirect
|
|
```
|
|
http://localhost:3001/signin?redirect=/account/settings
|
|
└─ Redirects here after login
|
|
```
|
|
|
|
### After Sign-Up with Redirect
|
|
```
|
|
http://localhost:3001/signup?redirect=/webinars
|
|
└─ Redirects here after signup
|
|
```
|
|
|
|
### Example Redirects
|
|
```
|
|
# Redirect to user settings
|
|
/signin?redirect=/account/settings
|
|
|
|
# Redirect to specific webinar
|
|
/signup?redirect=/webinars/123
|
|
|
|
# Redirect to admin dashboard
|
|
/signin?redirect=/admin
|
|
|
|
# Default (no redirect param)
|
|
/signin → /account/webinars
|
|
```
|
|
|
|
---
|
|
|
|
## Browser Experience
|
|
|
|
### Navigation Links
|
|
```
|
|
Header/Navbar
|
|
├─ "Sign In" button
|
|
│ └─ Links to /signin
|
|
│
|
|
└─ "Get Started" button
|
|
└─ Links to /signup
|
|
```
|
|
|
|
### After Authentication
|
|
- Navbar shows user profile picture/initials
|
|
- Click profile → Dropdown menu with:
|
|
- My Webinars
|
|
- Settings
|
|
- Logout
|
|
|
|
### Mobile Experience
|
|
- Pages stack nicely on small screens
|
|
- Form takes full width
|
|
- Gradient background hidden (show on tablet+)
|
|
- All inputs optimized for mobile
|
|
|
|
---
|
|
|
|
## OAuth Providers
|
|
|
|
All providers show as buttons:
|
|
|
|
```
|
|
┌──────────────┬──────────────┐
|
|
│ 🔍 Google │ 🐙 GitHub │
|
|
└──────────────┴──────────────┘
|
|
|
|
┌──────────────┬──────────────┐
|
|
│ 👍 Facebook │ 💬 Discord │
|
|
└──────────────┴──────────────┘
|
|
```
|
|
|
|
Each button:
|
|
- Shows provider brand colors/logos
|
|
- 2-column grid layout
|
|
- Hover effects with border colors
|
|
- Click redirects to provider login
|
|
|
|
---
|
|
|
|
## Configuration
|
|
|
|
OAuth providers are configured via Admin:
|
|
- **URL**: `http://localhost:3001/admin/setup`
|
|
- **Section**: "OAuth Providers (BetterAuth)"
|
|
- Each provider can be enabled/disabled
|
|
- Enter Client ID and Client Secret
|
|
|
|
Once configured:
|
|
- OAuth buttons appear automatically
|
|
- No page refresh needed
|
|
- Users can immediately use them
|
|
|
|
---
|
|
|
|
## Common Scenarios
|
|
|
|
### Scenario 1: User has account
|
|
```
|
|
1. Visit /signin
|
|
2. Enter email & password
|
|
3. Click Sign In
|
|
4. Redirected to /account/webinars ✓
|
|
```
|
|
|
|
### Scenario 2: New user signing up
|
|
```
|
|
1. Visit /signup
|
|
2. Fill form (name, email, password)
|
|
3. Password strength indicator shows green ✓
|
|
4. Click Sign Up
|
|
5. Account created, logged in
|
|
6. Redirected to /account/webinars ✓
|
|
```
|
|
|
|
### Scenario 3: OAuth sign-in
|
|
```
|
|
1. Visit /signin
|
|
2. Click Google button
|
|
3. Redirected to Google login
|
|
4. Log in with Google account
|
|
5. Redirected back to app
|
|
6. Session created
|
|
7. Redirected to /account/webinars ✓
|
|
```
|
|
|
|
### Scenario 4: First-time OAuth
|
|
```
|
|
1. Visit /signup
|
|
2. Click GitHub button
|
|
3. Redirected to GitHub login
|
|
4. Log in with GitHub
|
|
5. GitHub OAuth returns profile
|
|
6. BetterAuth creates new user
|
|
7. Session created
|
|
8. Redirected to /account/webinars ✓
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Problem: OAuth buttons don't show
|
|
**Solution**:
|
|
- Go to /admin/setup
|
|
- Check if providers are enabled
|
|
- Ensure Client ID/Secret are filled
|
|
- Refresh page
|
|
|
|
### Problem: "Sign In" button redirects wrong
|
|
**Solution**:
|
|
- Check redirect parameter in URL
|
|
- Default is /account/webinars
|
|
- Use `?redirect=/desired/url` to change
|
|
|
|
### Problem: Password validation fails
|
|
**Solution**:
|
|
- Must be 8-20 characters
|
|
- Need uppercase letter (A-Z)
|
|
- Need number (0-9)
|
|
- No spaces allowed
|
|
|
|
### Problem: OAuth redirects to blank page
|
|
**Solution**:
|
|
- OAuth might be processing in background
|
|
- Wait a few seconds
|
|
- Check browser console for errors
|
|
|
|
---
|
|
|
|
## Files Involved
|
|
|
|
### Pages
|
|
- `/app/signin/page.tsx` - Sign-in page
|
|
- `/app/signup/page.tsx` - Sign-up page
|
|
- `/app/auth-callback/page.tsx` - OAuth callback handler
|
|
|
|
### Navigation
|
|
- `components/Navbar.tsx` - Links to auth pages
|
|
|
|
### OAuth Callbacks
|
|
- `app/auth/google/callback/route.ts`
|
|
- `app/auth/github/callback/route.ts`
|
|
- `app/auth/facebook/callback/route.ts`
|
|
- `app/auth/discord/callback/route.ts`
|
|
|
|
### Configuration
|
|
- `lib/auth.ts` - BetterAuth setup
|
|
- `data/system-config.json` - OAuth credentials
|
|
- `/admin/setup` - Admin page to configure
|
|
|
|
---
|
|
|
|
## Key Features
|
|
|
|
✅ **Dedicated pages** - Modern, professional experience
|
|
✅ **No popup blocking** - Full page URLs
|
|
✅ **OAuth support** - 4 providers (Google, GitHub, Facebook, Discord)
|
|
✅ **Redirect URLs** - Custom post-auth navigation
|
|
✅ **Password validation** - Real-time strength feedback
|
|
✅ **Dark mode** - Full support
|
|
✅ **Mobile responsive** - Works on all devices
|
|
✅ **Professional design** - Split layout with gradients
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
1. **Configure OAuth** → Go to `/admin/setup`
|
|
2. **Test Sign-In** → Visit `/signin`
|
|
3. **Test Sign-Up** → Visit `/signup`
|
|
4. **Test OAuth** → Click provider buttons
|
|
5. **Test Redirects** → Use `?redirect=` parameter
|
|
|
|
---
|
|
|
|
## URLs Quick Reference
|
|
|
|
| What | URL |
|
|
|------|-----|
|
|
| Sign In | `/signin` |
|
|
| Sign Up | `/signup` |
|
|
| Sign In (with redirect) | `/signin?redirect=/account/settings` |
|
|
| Sign Up (with redirect) | `/signup?redirect=/webinars` |
|
|
| OAuth Callback | `/auth-callback?redirect=/account/webinars` |
|
|
| Admin Setup | `/admin/setup` |
|
|
| User Dashboard | `/account/webinars` |
|
|
| User Settings | `/account/settings` |
|
|
|
|
Done! All dedicated auth pages are ready to use! 🚀
|