rdcstarr/laravel-easyapi

A simple settings package for Laravel.

v1.0.3 2025-09-18 14:06 UTC

This package is auto-updated.

Last update: 2025-09-18 14:07:10 UTC


README

Latest Version on Packagist Tests Code Style Downloads

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 the EasyApiManager service.
  • ๐Ÿงช Test-friendly โ€” models and factories included to make testing straightforward.
  • ๐Ÿ“ฆ Migrations included โ€” package ships migrations for api and api_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 the api 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, timestamps
  • api_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