directorytree/bartender
Opinionated Laravel Socialite auth starter. Ships ready-made routes (/auth/{driver}/redirect, /callback), controller, and user columns for provider ID/name plus optional access/refresh tokens. Highly customizable; supports soft deletes and email verification.
ProviderHandler, ProviderRepository, ProviderRedirector) allows customization without forking, making it adaptable to niche requirements (e.g., custom user logic, token handling).config/services.php.users table schemas (e.g., if provider_id/provider_name already exist).laravel/socialite, socialiteproviders/*). Misconfiguration (e.g., incorrect redirect URIs) can break OAuth flows.ProviderRepository, ProviderHandler) and may introduce edge cases.config/services.php?User model align with Bartender’s assumptions (e.g., email_verified_at, soft deletes)?StoresProviderTokens interface and encrypted columns)?ProviderHandler?users table already have columns like provider_id or provider_name? If so, how will conflicts be resolved?socialiteproviders/google, socialiteproviders/microsoft).Pre-Integration:
User model and users table schema for conflicts (e.g., overlapping columns).composer require socialiteproviders/google).Installation:
composer require directorytree/bartender
php artisan vendor:publish --provider="DirectoryTree\Bartender\BartenderServiceProvider"
php artisan migrate
Configuration:
routes/web.php:
Bartender::routes();
config/services.php:
'google' => [
'redirect' => '/auth/google/callback',
],
AppServiceProvider:
Bartender::serve('google');
Bartender::serve('microsoft');
Frontend Integration:
<a href="{{ route('auth.driver.redirect', 'google') }}">Login with Google</a>
ProviderHandler.ProviderRepository or ProviderHandler for provider-specific logic (e.g., user mapping).StoresProviderTokens interface).directorytree/bartender and underlying Socialite providers for updates/breaking changes.config/services.php as needed.UserProviderHandler) if logic diverges from defaults.Bartender::serve() or misconfigured redirect URIs.ProviderRepository::updateOrCreate (e.g., duplicate emails).encrypted casts are properly configured.report() in ProviderRedirector to log OAuth failures (e.g., unableToAuthenticateUser).config/services.php) must be tenant-aware if using shared credentials.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Provider API downtime | Users unable to log in via OAuth. | Fallback to email/password auth; display user-friendly error messages. |
| Invalid redirect URI | OAuth provider rejects request. | Validate config/services.php URIs match production URLs. |
| Duplicate user creation | Conflicts in ProviderRepository. |
Implement unique constraints (e.g., email + provider_id). |
| Token storage corruption | Encrypted tokens become unreadable. | Use Laravel’s encrypted cast; back up DB regularly. |
| Custom handler errors | OAuth flow breaks silently. | Wrap custom logic in try-catch; log exceptions via ProviderRedirector. |
README.md and release notes for breaking changes.ProviderHandler overrides).ProviderRepository).Bartender::routes()).config/services.php).How can I help you explore Laravel packages today?