10 KiB
10 KiB
Dedicated Auth Pages - Quick Start Guide
What Changed
Before
- Modal popup appeared on same page
- Limited mobile experience
- Popup could be blocked
After ✨
- Dedicated
/signinand/signuppages - 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/urlto 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.tsapp/auth/github/callback/route.tsapp/auth/facebook/callback/route.tsapp/auth/discord/callback/route.ts
Configuration
lib/auth.ts- BetterAuth setupdata/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
- Configure OAuth → Go to
/admin/setup - Test Sign-In → Visit
/signin - Test Sign-Up → Visit
/signup - Test OAuth → Click provider buttons
- 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! 🚀