Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Vault Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • No security patches. An authorization package is security-critical surface; an unpatched one is a standing finding in any audit.
  • Laravel 5.x and PHP 7.0/7.1 are end-of-life. You would be stacking three unsupported layers.
  • 102 stars and no maintainer means no ecosystem pressure, no third-party integrations, no Stack Overflow corpus.
  • Framework internals it relies on (middleware registration, auth guard resolution, Blade compilation) have changed materially since 5.x.

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.

  1. What Laravel and PHP versions must we support at go-live and 12 months out? If ≥ Laravel 8, Vault is disqualified.
  2. Is there an existing entitlement model (multi-tenancy, teams, per-resource scoping) that a flat role→permission table cannot express?
  3. Do we need multi-guard authorization (admin vs. customer vs. API)? Vault's guard handling predates mature multi-auth patterns.
  4. What is our audit/compliance posture — do we need an actively maintained dependency for authz?
  5. Is there an internal fork owner willing to own a security-critical package indefinitely?

Integration Approach

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):

  1. Contain the blast radius first. Do not let 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.
  2. Replace Blade directives (@role, @permission and equivalents) with @can so view-layer coupling is to Laravel, not to Vault.
  3. Replace route middleware with Laravel's can: middleware backed by the same gates.
  4. Then swap the engine. Once gates/policies are the only call sites, replacing Vault with spatie is a schema migration plus a rewrite of the gate bodies — maybe a day or two, not a re-architecture.
  5. If a full framework upgrade is on the roadmap, sequence the authz swap before or alongside the Laravel upgrade, not after. Doing it during an LTS jump doubles the debugging surface.

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.

Operational Impact

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.

  • Silent authorization drift: roles change in the DB, cache not invalidated, users retain or lose access unexpectedly.
  • Middleware ordering: role/permission middleware placed before or after auth produces inconsistent 401 vs. 403 behavior and, worse, unauthenticated pass-through if misordered.
  • Guard ambiguity: with multiple guards, checks resolve against an unintended user, granting cross-context access.
  • Upgrade cliff: the framework upgrade that finally forces the swap arrives with no fallback, at a moment not of your choosing.
  • Dependency rot: a transitive package CVE with no upstream patch path.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core