🔐 Authentication & User Management
Note: Please configure your
.envDB connection before generating authentication module.
Quick Start
Generate a complete authentication system with a single command:
php artisan auth:generate
Available Options:
php artisan auth:generate --force # Overwrite existing files
php artisan auth:generate --skip-roles # Skip roles and permissions
php artisan auth:generate --skip-email-verification # Skip email verification
php artisan auth:generate --with-social-login # Include social authentication
📦 Basic Authentication
Setup Instructions
1. Install Authentication Package and Configure
⚠️ Note: You can use either Sanctum or Passport for authentication.
Install Laravel Sanctum (if not already installed):
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Configuration:
Ensure Sanctum's middleware is added to your bootstrap/app.php:
->withMiddleware(function (Middleware $middleware): void {
$middleware->statefulApi();
})
Update User Model:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
// ...
}
2. Update .env configuration:
AUTH_GUARD='api'
FRONTEND_URL=http://localhost:5173
3. Configure config/app.php:
'frontend_url' => env('FRONTEND_URL', 'http://localhost:3000'),
4. Update config/auth.php for Sanctum API:
'guards' => [
'api' => [
'driver' => 'sanctum',
'provider' => 'users',
'hash' => false,
],
],
5. Register Routes in routes/api.php:
// Authentication routes (public)
require __DIR__.'/api/auth.php';
// Access control routes (protected)
require __DIR__.'/api/access-control.php';
6. Configure Mail settings in .env for password reset:
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@yourapp.com
MAIL_FROM_NAME="${APP_NAME}"
👥 User Management
Setup Instructions
User management endpoints are automatically available once authentication is set up. No additional configuration required beyond the basic authentication setup.
🛡️ Roles & Permissions (Optional)
Note: Generated only if you don't use
--skip-rolesflag
Setup Instructions
1. Update User Model to include roles trait:
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, HasRoles;
// ... rest of your model
}
2. Register access control routes in routes/api.php:
// Roles & Permissions routes (protected)
require __DIR__.'/api/access-control.php';
3. Include seeders in database/seeders/DatabaseSeeder.php:
public function run()
{
$this->call([
PermissionSeeder::class,
UserTableSeeder::class,
]);
}
4. Run migrations and seeders:
php artisan migrate
php artisan db:seed
🌐 Social Authentication (Optional)
Note: Generated only if you use
--with-social-loginflag
Supported Providers
- GitHub
- and more...
Setup Instructions
1. Configure social providers in config/services.php:
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_CALLBACK_URL'),
],
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_CALLBACK_URL'),
],
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => env('GITHUB_CALLBACK_URL'),
],
2. Add credentials to .env:
# Google
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CALLBACK_URL="${APP_URL}/api/auth/social/google/callback"
# Facebook
FACEBOOK_CLIENT_ID=your_facebook_client_id
FACEBOOK_CLIENT_SECRET=your_facebook_client_secret
FACEBOOK_CALLBACK_URL="${APP_URL}/api/auth/social/facebook/callback"
# GitHub
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITHUB_CALLBACK_URL="${APP_URL}/api/auth/social/github/callback"
3. Register social auth routes in routes/api.php:
// Social authentication routes
require __DIR__.'/api/social-auth.php';
4. Frontend Implementation:
Check the React App Example for frontend social auth implementation reference.
📝 Additional Notes
File Replacement Handling
When generating authentication files, if a file already exists:
- You'll be prompted to confirm replacement
- Use
--forceflag to automatically overwrite all files - Skip files individually when prompted
Port Configuration
If you're using a different port for your frontend, update the FRONTEND_URL in .env accordingly. Common ports:
- Nuxt 3:
http://localhost:3000 - Vite/React:
http://localhost:5173 - Next.js:
http://localhost:3000