flametrench / laravel
Laravel adapter for Flametrench: ServiceProvider + facades + middleware bridging the flametrench/{ids,identity,tenancy,authz} PHP SDKs into Laravel applications.
Requires
- php: ^8.3
- flametrench/authz: ^0.2.0
- flametrench/identity: ^0.2.0
- flametrench/ids: ^0.2.0
- flametrench/tenancy: ^0.2.0
- illuminate/contracts: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Laravel adapter for Flametrench — wires the four PHP SDK packages (flametrench/{ids,identity,tenancy,authz}) into Laravel's service container.
Status
Pre-release scaffold. Targets Laravel 11+ on PHP 8.3+. Spec tracking v0.2.0.
Install
composer require flametrench/laravel:^0.2.0
The package auto-registers Flametrench\Laravel\FlametrenchServiceProvider and the Flametrench facade alias via Laravel's package discovery.
Configuration
Publish the config file:
php artisan vendor:publish --tag=flametrench-config
This drops config/flametrench.php into your app, where you select drivers per capability:
return [ 'identity' => ['driver' => env('FLAMETRENCH_IDENTITY_DRIVER', 'in-memory')], 'tenancy' => ['driver' => env('FLAMETRENCH_TENANCY_DRIVER', 'in-memory')], 'authz' => ['driver' => env('FLAMETRENCH_AUTHZ_DRIVER', 'in-memory')], ];
The default in-memory driver wires the reference implementations from the per-capability SDKs — fine for tests and local development.
Production binding
This package does not ship Postgres-backed stores; those live in the per-capability SDKs as they land. For production, override the bindings in your own AppServiceProvider::register():
use Flametrench\Identity\IdentityStore; use App\Identity\PostgresIdentityStore; public function register(): void { $this->app->singleton(IdentityStore::class, function ($app) { return new PostgresIdentityStore($app->make(\PDO::class)); }); }
AppServiceProvider runs before package providers, so your binding wins.
Usage
Type-hint the Flametrench store interfaces in controller / job constructors:
use Flametrench\Tenancy\TenancyStore; class OrgController { public function __construct(private readonly TenancyStore $tenancy) {} public function store(Request $request): JsonResponse { $result = $this->tenancy->createOrg( $request->user()->id, name: $request->input('name'), slug: $request->input('slug'), ); return response()->json($result['org']); } }
Or use the Flametrench facade for one-liners:
use Flametrench\Laravel\Facades\Flametrench; $user = Flametrench::identity()->getUser($usrId);
Testing
composer install
composer test
composer test:coverage
The test suite uses Orchestra Testbench to boot a Laravel application around the package, so the service provider binds against a real container.
License
Apache License 2.0. Copyright 2026 NDC Digital, LLC.