arielmejiadev/json-api-auth
Laravel package that adds token-based JSON API authentication to your app, with ready-made login, registration, refresh, and logout endpoints. Secure API routes and issue access tokens without hand-wiring auth logic.
1.1.0 explicitly (composer require <vendor>/<package>:^1.1) so you pick up the new Laravel 9 support rather than resolving to an older tag. Check composer show <vendor>/<package> afterwards to confirm what actually landed in composer.lock.illuminate/support (or laravel/framework) in the package's composer.json allows ^9.0, and that your app's PHP is >= 8.0 — Laravel 9's floor. If you are still on Laravel 8, the same tag should remain usable, but read the constraint rather than assuming.php artisan package:discover and php artisan config:clear after install. If the package ships a config file, php artisan vendor:publish --provider="Vendor\Package\ServiceProvider" (or --tag=config) and read it top to bottom — the defaults are the de facto documentation.src/ entry point (service provider and the main facade/class) → the package's own tests/ directory. Tests are the most honest usage examples you will get, especially for a release whose notes say only "changed some internal methods."new-ing it, so you immediately learn whether the binding works the way you expect.App\Services\YourFeatureService that owns the package calls. When 1.1.x → 1.2 arrives, you change one file instead of grepping 40 call sites. This is the single highest-leverage pattern for a package that describes its changes as "internal."config('package.key') and overridden per-environment in .env-backed config files. Avoid publishing a second config file to "customise" — override in config/<package>.php and keep the package's defaults visible in git history.$this->tries, backoff(), and failed() defined. This is also where idempotency matters: assume the package may be retried, and guard side effects with a dedupe key.Package::fake() or an equivalent in the source; if it exists, use it in feature tests and assert against recorded calls. Fall back to $this->mock(Contract::class) bound in the container for unit tests. Always RefreshDatabase when the package touches tables, and test one real integration call against a sandbox/stub before shipping.composer update <vendor>/<package> → run the full suite → grep -rn "extends .*Package" app/ to find any subclass you wrote. Internal-method changes only bite you if you extended or overrode. If your suite is thin, at minimum exercise every place you call the package and diff the release's src/ against 1.0.x (git diff 1.0.0..1.1.0 -- src/ in the vendor checkout or upstream repo).protected/private, anything you subclassed, and anything you called that the README did not document is fair game. Treat undocumented methods as unstable and plan to re-read that diff on every minor bump.^1.1 is right for a semver minor. Do not pin an exact 1.1.0 in libraries you publish; do pin exact in production if you have no test coverage and will upgrade deliberately.php artisan config:clear && php artisan cache:clear && composer dump-autoload. A surprising number of "the new version broke" reports are an optimised config cache holding old values.config/<package>.php against the package's config/<package>.php after each upgrade, or delete and re-publish into a diff.daily/stderr, or drop ray()/logger() calls around the boundary of your wrapper service. Telescope's "Exceptions" and "Jobs" tabs are usually faster than step-debugging vendor code.How can I help you explore Laravel packages today?