rdcstarr / laravel-easyapi
A simple settings package for Laravel.
v1.0.3
2025-09-18 14:06 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
README
Lightweight package for managing API keys in Laravel โ with middleware protection, logging and simple CLI tools.
โจ Features
- ๐ API key management โ generate, list, reveal and delete API keys via an artisan command or programmatically.
- ๐ก Middleware protection โ a lightweight middleware validates Bearer tokens on incoming requests.
- ๐ Usage metrics โ each key tracks an access count and API access is logged to
api_logs
. - ๐ Secure keys โ keys are generated using SHA-256 with unique identifiers to avoid collisions.
- โ๏ธ Facade & manager โ programmatic API via the
EasyApi
facade or theEasyApiManager
service. - ๐งช Test-friendly โ models and factories included to make testing straightforward.
- ๐ฆ Migrations included โ package ships migrations for
api
andapi_logs
tables and can be published.
๐ฆ Installation
composer require rdcstarr/laravel-easyapi
Publish the migrations (optional) and migrate:
php artisan vendor:publish --provider="Rdcstarr\EasyApi\EasyApiServiceProvider" --tag="migrations" php artisan migrate
The package registers a singleton manager and a console command. It will also load the package migrations and register route groups if you provide routes/api.php
or routes/web.php
.
๐ Usage
Facade examples (programmatic):
use Rdcstarr\EasyApi\Facades\EasyApi; // Generate a new API key (returns the Api model) $api = EasyApi::createKey(); $fullKey = $api->key; // show and store this securely // Validate a key (returns bool) $isValid = EasyApi::validateKey($fullKey); // Delete a key EasyApi::deleteKey($fullKey);
Middleware usage:
- The package provides
Rdcstarr\EasyApi\Middleware\EasyApiMiddleware
which checks for a Bearer token and validates it against theapi
table. If valid, it logs the request and increments the access count.
Apply it to a route or route group:
Route::middleware([\Rdcstarr\EasyApi\Middleware\EasyApiMiddleware::class])->group(function () { Route::get('/protected', function () { return ['ok' => true]; }); });
Database schema:
api
table: id, key (unique), access_count, timestampsapi_logs
table: id, api_id, endpoint, ip_address, user_agent, timestamps
Artisan CLI:
The package exposes a single console command: php artisan easyapi
with the following actions:
- generate โ create a new API key
- delete --key=KEY โ delete an API key (confirmation required)
- list โ display stored API keys (masked) with access counts
- reveal --id=ID โ reveal the full API key for a given id
Examples:
php artisan easyapi generate
php artisan easyapi list
php artisan easyapi delete --key="qwerty_..."
php artisan easyapi reveal --id=1
Notes:
- Generated keys must be stored securely when created โ the
generate
command shows the full key once. - The command output masks keys in listings for safety; use
reveal
to show the full value when necessary.
๐งช Testing
Run the package tests:
composer test
The package provides models (Api
, ApiLog
) and factories to make writing tests simpler.
๐ Resources
- Changelog for more information on what has changed recently.
๐ฅ Credits
๐ License
- License for more information.