ruvents/manual-authentication-bundle
Ruvents ManualAuthenticationBundle provides simple manual authentication utilities for Symfony apps, with straightforward login and logout handling, session-based user persistence, and easy access to the current authenticated user.
Install the package with Composer and let Laravel's package discovery register the service provider:
composer require vendor/package
Publish any shipped configuration and migrations, then review what was published before running them:
php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
php artisan migrate
Where to look first:
README and CHANGELOG for the supported Laravel/PHP versions.config/package.php — this is usually the fastest way to understand the package's moving parts and defaults.register() and boot() methods if you need to know what gets bound into the container and which hooks are fired.First use case: wire the package into a single, low-risk entry point — a console command, a queued job, or one controller action — and confirm it works end to end. Don't roll it out across the whole app until you've verified the happy path in isolation.
Resolve from the container, don't instantiate directly. Bindings and singletons are registered by the service provider. Type-hint the package's contracts in constructors so tests can swap in fakes:
public function __construct(private PackageContract $package) {}
Wrap third-party calls behind a thin adapter. Rather than scattering package calls across your domain, expose a small interface in your app and implement it with the package. If the package is swapped or upgraded, only one class changes.
Use events and extension points over forking. Most packages fire events or expose macroable classes. Listen to those instead of editing vendor code — changes under vendor/ are lost on composer update.
Configuration over convention when environments differ. Keep environment-specific values (API keys, endpoints, timeouts, queue names) in config/package.php reading from env(), and cache config in production:
php artisan config:cache
Test with the package's fakes when provided. If the package ships a fake, bind it in setUp() so your suite doesn't hit the network. Where no fake exists, mock the contract you defined in the adapter.
Queue long-running work. Anything that calls an external service should go through a job with retries and a timeout, not a synchronous request path.
config/package.php on a server with cached config, the change won't take effect until php artisan config:cache is re-run. Add it to your deploy script.vendor:publish without a --tag publishes everything, which can overwrite local edits. Run php artisan vendor:publish --list (or check the README) first and publish only what you need.CHANGELOG before composer update and pin the major version in composer.json.bootstrap/providers.php, order is significant for deferred providers.php artisan about, then check storage/logs/laravel.log. For binding issues, php artisan tinker and app()->make(YourContract::class) quickly confirms whether the container is wired up. Set APP_DEBUG=true locally only.Macroable, published config, events, and interfaces in the package's Contracts directory. These are the supported seams — anything else is internal and can change without notice.How can I help you explore Laravel packages today?