takeone/REGISTRATION_TEST_GUIDE.md

330 lines
7.0 KiB
Markdown

# Registration System - Complete Test Guide
## ✅ System Status
Your Laravel server is **RUNNING** at: `http://127.0.0.1:8000`
All components are in place:
- ✅ POST /register route is registered
- ✅ RegisteredUserController with super-admin logic
- ✅ WelcomeEmail with verification button
- ✅ Email verification page
- ✅ All caches cleared and optimized
## 🧪 How to Test Registration
### Step 1: Access Registration Page
Open your browser and go to:
```
http://127.0.0.1:8000/register
```
### Step 2: Fill Out the Form
Enter the following information:
- **Full Name:** John Doe
- **Email:** john@example.com
- **Password:** password123
- **Confirm Password:** password123
- **Mobile Number:** 1234567890
- **Country Code:** +1 (United States)
- **Gender:** Male (M)
- **Birthdate:** 01/01/2000 (must be at least 10 years ago)
- **Nationality:** United States
### Step 3: Submit the Form
Click the **"REGISTER"** button.
### Step 4: Expected Behavior
After clicking Register, the following should happen:
1. **User Created in Database:**
- New user record created in `users` table
- Password is hashed
- Mobile stored as JSON: `{"code": "+1", "number": "1234567890"}`
2. **Super-Admin Role Assigned:**
- First user gets `super-admin` role automatically
- Record created in `user_roles` table
3. **Welcome Email Sent:**
- Email sent to the registered email address
- Contains "Verify Your Email" button
- Button links to verification URL
4. **Browser Redirects:**
- Redirects to: `http://127.0.0.1:8000/email/verify`
- Shows message: "Verify Your Email"
- Shows: "We've sent a verification link to your email address"
- Shows: "Resend Verification Email" button
## 📧 Email Configuration
### Check Your Mail Driver
Run this command to see your current mail configuration:
```cmd
php artisan tinker
```
Then type:
```php
config('mail.mailer')
```
### Common Mail Drivers:
#### 1. **Log Driver (Development - Default)**
If using `log` driver, emails are written to:
```
storage/logs/laravel.log
```
To view the email:
```cmd
type storage\logs\laravel.log
```
Look for the verification URL in the log file.
#### 2. **SMTP Driver (Production)**
If using SMTP, check your email inbox for the welcome email.
#### 3. **Mailtrap (Testing)**
If using Mailtrap, check your Mailtrap inbox.
### To Change Mail Driver:
Edit your `.env` file:
**For Development (Log to File):**
```env
MAIL_MAILER=log
MAIL_FROM_ADDRESS="noreply@example.com"
MAIL_FROM_NAME="${APP_NAME}"
```
**For Gmail SMTP:**
```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="noreply@example.com"
MAIL_FROM_NAME="${APP_NAME}"
```
After changing `.env`, restart the server:
```cmd
.\restart-server.bat
```
## 🔍 Verification Process
### Manual Email Verification (If Email Not Configured)
If you can't receive emails, you can manually verify the user:
1. **Get the verification URL from logs:**
```cmd
type storage\logs\laravel.log | findstr "verification"
```
2. **Or manually verify in database:**
```cmd
php artisan tinker
```
Then:
```php
$user = App\Models\User::where('email', 'john@example.com')->first();
$user->markEmailAsVerified();
```
3. **Or visit the verification URL directly:**
```
http://127.0.0.1:8000/email/verify/{user_id}/{hash}
```
## 🗄️ Database Verification
### Check if User Was Created:
```cmd
php artisan tinker
```
```php
App\Models\User::latest()->first();
```
### Check if Super-Admin Role Was Assigned:
```php
$user = App\Models\User::latest()->first();
$user->roles;
```
Should show the super-admin role.
### Or Use SQL:
```sql
-- Check latest user
SELECT * FROM users ORDER BY id DESC LIMIT 1;
-- Check user roles
SELECT u.id, u.email, u.full_name, r.name as role, r.slug
FROM users u
LEFT JOIN user_roles ur ON u.id = ur.user_id
LEFT JOIN roles r ON ur.role_id = r.id
ORDER BY u.id DESC
LIMIT 1;
```
## 🐛 Troubleshooting
### Issue: Form Doesn't Submit (Nothing Happens)
**Solution:**
1. Open browser console (F12)
2. Look for JavaScript errors
3. Check Network tab for failed requests
4. Verify CSRF token is present in form
### Issue: 404 Error on Submit
**Solution:**
```cmd
.\restart-server.bat
```
### Issue: 419 CSRF Token Mismatch
**Solution:**
1. Clear browser cache (Ctrl+Shift+Delete)
2. Hard refresh page (Ctrl+Shift+R)
3. Try in incognito mode
### Issue: Validation Errors
**Common validation issues:**
- Email already exists
- Password too short (min 8 characters)
- Passwords don't match
- Birthdate not at least 10 years ago
- Missing required fields
### Issue: Email Not Sending
**Check mail configuration:**
```cmd
php artisan tinker
```
```php
// Test email sending
Mail::raw('Test email', function($message) {
$message->to('test@example.com')->subject('Test');
});
```
If using `log` driver, check:
```cmd
type storage\logs\laravel.log
```
### Issue: Can't Access Admin Panel After Registration
**Verify super-admin role:**
```cmd
php artisan tinker
```
```php
$user = App\Models\User::where('email', 'your@email.com')->first();
$user->isSuperAdmin(); // Should return true
```
If false, manually assign:
```php
$user->assignRole('super-admin');
```
## ✅ Success Checklist
After registration, verify:
- [ ] User record created in database
- [ ] Password is hashed (not plain text)
- [ ] Mobile stored as JSON
- [ ] Super-admin role assigned (first user only)
- [ ] Welcome email sent (check logs if using log driver)
- [ ] Redirected to email verification page
- [ ] Verification page shows correct message
- [ ] Resend button works
- [ ] Verification link works (from email or logs)
- [ ] After verification, can login
- [ ] Can access `/admin` routes as super-admin
## 📝 Test Second User Registration
To verify that only the first user gets super-admin:
1. Register a second user with different email
2. Check database:
```php
$user2 = App\Models\User::where('email', 'second@example.com')->first();
$user2->isSuperAdmin(); // Should return false
```
## 🎯 Next Steps After Successful Registration
1. **Verify Email:** Click link in email or manually verify
2. **Login:** Go to `/login` and login with credentials
3. **Access Admin Panel:** Go to `/admin` (super-admin only)
4. **Explore Platform:** Go to `/explore` to see clubs
5. **Create Family Members:** Go to `/members/create`
## 📞 Need Help?
If registration still doesn't work:
1. **Check server logs:**
```cmd
type storage\logs\laravel.log
```
2. **Check browser console:** Press F12 and look for errors
3. **Verify routes:**
```cmd
php artisan route:list --path=register
```
4. **Test route directly:**
```cmd
php artisan tinker
```
```php
$response = $this->post('/register', [
'full_name' => 'Test User',
'email' => 'test@test.com',
'password' => 'password123',
'password_confirmation' => 'password123',
'mobile_number' => '1234567890',
'country_code' => '+1',
'gender' => 'm',
'birthdate' => '2000-01-01',
'nationality' => 'United States'
]);
```
The registration system is fully functional and ready to use!