rappasoft/vault
Rappasoft Vault gives Laravel apps an encrypted key-value store for secrets and credentials. Keep API keys, tokens, and other sensitive values in the database instead of config files or source control, and retrieve them through a simple facade.
Architecture fit. Vault is a conventional Laravel 5-era package: a service provider, published migrations for roles, permissions, and pivot tables, Eloquent models, a VaultUser trait applied to the User model, and route middleware plus Blade directives for role/permission checks. It fits applications that want database-backed RBAC tightly coupled to Laravel's auth stack with minimal ceremony. It does not fit anything resembling a modern architecture: no policy-first design, no multi-guard or multi-tenant awareness out of the box, no API-token-oriented authorization story beyond what middleware you bolt on, and no headless/decoupled consumer support.
Integration feasibility. Straightforward if and only if the target is a greenfield or existing Laravel 5.x application on PHP 7.0–7.1. The composer constraint will almost certainly reject Laravel 6+ and PHP 7.3+; verify against composer.json before planning anything. For any current Laravel release (10/11/12), integration is effectively a fork-and-rewrite exercise, not an adoption.
Technical risk. This is the dominant factor. The repository is archived, meaning:
The residual risk is not "the code is bad" — it's "nobody is accountable for it and the platform beneath it is dead."
Key questions.
Stack fit. Vault presumes the canonical Laravel monolith: Blade views, session auth, synchronous request/response, single User model. It is a poor fit for SPA + API-token architectures, service-to-service authorization, or anything where the authorization decision needs to be evaluated outside a Laravel request lifecycle (queues, scheduled jobs, websocket auth).
Compatibility. Treat as Laravel 5.x / PHP 7.0–7.1 only, and treat that as a hard gate in the decision — not an assumption to be tested late. Confirm the exact illuminate/* and php constraints from composer.json before sequencing anything.
Migration path. If the requirement is genuinely "roles and permissions in Laravel," the correct baseline is spatie/laravel-permission (actively maintained, same conceptual model, broad community support) or JosephSilber/bouncer if you need resource-scoped abilities. Vault's schema is close enough to spatie's that a data migration is mechanical: roles, permissions, and the two pivot tables map across, with the main work being the authorization call sites.
Recommended sequencing (assuming a legacy Laravel 5 app where Vault is already proposed or present):
hasRole() / hasPermission() / Vault middleware calls leak into controllers, views, and jobs. Define application-level Gate::define / Policy classes as the single authorization entry point, and delegate to Vault inside them. Every check in the codebase then calls $this->authorize(...) — package-agnostic.@role, @permission and equivalents) with @can so view-layer coupling is to Laravel, not to Vault.can: middleware backed by the same gates.If Vault is proposed for greenfield work on a current Laravel version: decline, and pick spatie. The delta in effort is small; the delta in risk is not.
Maintenance. Effectively total internal ownership. There is no upstream. Every PHP minor bump, framework upgrade, or CVE in a transitive dependency becomes your remediation. Budget it as an in-house package, not a dependency — and note that "in-house security-critical authorization code" requires a named owner and a review process, otherwise it silently decays.
Support. None. No maintainer, no issue triage, no release cadence, no security advisory channel. Incident response during a production authorization defect is "read the source." For a TPM, that is a real on-call burden to socialize with the ops/security stakeholders before sign-off.
Scaling. The performance profile is ordinary database-backed RBAC: role and permission lookups per request, join across pivots. At moderate traffic this is fine, particularly if the package caches (verify whether caching is built in and whether invalidations are correct — cache staleness on permission changes is the classic defect here). The scaling risk is organizational, not technical: as the permission matrix grows past a few dozen entries, flat role→permission without resource scoping produces role explosion and unreadable audit trails.
Failure modes.
role/permission middleware placed before or after auth produces inconsistent 401 vs. 403 behavior and, worse, unauthenticated pass-through if misordered.Ramp-up. Low for developers — the API is small and idiomatic Laravel, and anyone who has used spatie will map it in an hour. The real ramp-up cost is institutional knowledge: because the package is unmaintained, there is no documentation ecosystem to lean on, so tribal knowledge about its quirks (cache behavior, guard resolution, pivot semantics) must be written down deliberately or it leaves with the first engineer who touched it.
Bottom line for the decision record. Vault is a legible, small, MIT-licensed RBAC package that solved a real problem in 2015 and is now a liability: archived, pinned to end-of-life Laravel and PHP, and sitting on security-critical surface. Approve only for a frozen legacy Laravel 5 application where the authorization boundary has been wrapped behind Gates/Policies and a funded exit to spatie/laravel-permission is on the roadmap. Reject for anything new or anything expected to run past the next 12 months.
How can I help you explore Laravel packages today?