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

Guarded Authentication Bundle Laravel Package

jafar/guarded-authentication-bundle

A PHP authentication bundle that adds guarded authentication to your application, with configurable guards, access checks, and a straightforward setup for integrating secure login flows into existing projects. Designed to keep authentication logic organized and easy to extend.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — unchanged, and still disqualifying for Laravel. v4.0.0 changes which Symfony version the package targets, not which framework it belongs to. It remains a Symfony bundle: a Bundle subclass, a DI extension, and kernel registration. Laravel has no bundle concept, no kernel, and no autoconfiguration mechanism that consumes this code. Laravel's auth surface is Illuminate\Auth (AuthManager, guards, Auth::extend), middleware, and Sanctum or Passport. The "Laravel/PHP" catalog framing remains a misclassification. The honest read of this release is: it is now a better Symfony package. That is not the axis this evaluation is scoring on.

What actually changed technically — more than a version bump. Symfony 6.0 removed Guard, so a package that "works with Symfony 6" has necessarily rewritten its authentication path onto the modern authenticator/passport-badge system. That is a substantive auth-code rewrite, not a constraint edit. Two consequences follow. First, the concrete dependency objection from the prior assessment is retired: symfony/guard is no longer in the graph, so the expected composer audit liability and the "abandoned transitive dependency with no upstream fix path" failure mode are gone. Second, an auth rewrite is the single highest-risk change class in this domain, and it has landed in a package with 8 stars, 0 dependents, and no visible CI — meaning no downstream user will exercise the new verifier before you do.

Integration feasibility — unchanged; rewrite rather than integrate. The ~1–2 week estimate for a Laravel-native JWT guard on lcobucci/jwt or firebase/php-jwt stands untouched. The reusable asset is still conceptual. v4.0.0 marginally improves the package as a design reference — the source now demonstrates the post-Guard authenticator pattern — but that pattern is Symfony-specific and does not map onto Laravel's guard/middleware model.

Technical risk — still high, but the composition has shifted. Retired: the EOL symfony/guard transitive dependency. Unchanged: unverified JWT/JWS implementation on an authentication path; no CI, no CVE monitoring, no disclosure process, no dependents to surface defects. Added: a v3→v4 verifier rewrite in a package nobody is watching, shipped with a one-sentence release note and no changelog, migration guide, or security section. Algorithm pinning, aud/iss validation, expiry handling, and key handling are all things a rewrite can silently change. "Works with Symfony 6" is an assertion, not evidence. Note also that a single release after roughly three and a half years of silence reads as a one-off maintenance pulse, not a maintained project — and "php 8 or later" is a loose paraphrase, not a constraint; the exact composer.json floor (^8.0 vs ^8.1 vs ^8.2) must be read directly, since Symfony 6.x itself floors at 8.0.2/8.1 depending on minor.

Key questions — revised, with new priority on the delta:

  • New: What changed in the verification path between v3 and v4? Is the algorithm allowlist carried over intact, or reimplemented?
  • New: What replaced Guard specifically — and does the new authenticator preserve the same claim validation, or lean on Symfony defaults that differ?
  • New: Is there a CHANGELOG or upgrade guide for v4, and does the project now have any stated security-disclosure or CVE-watch process?
  • New: Exact composer.json PHP and symfony/* constraints.
  • Carried over, still unanswered by the release notes: which JWS algorithms are accepted and is alg pinned server-side (no none, no HMAC/RSA confusion); key storage and kid/rotation support; revocation/denylist mechanism; token lifetime, refresh, clock-skew tolerance; password hashing delegation and cost parameters; test suite presence; maintainer responsiveness to a private report.
  • New, lifecycle: Is this release a one-off or the start of a cadence? Watch for issue triage and a subsequent release before treating the project as alive.

Recommendation: unchanged for Laravel — do not adopt; use as a design reference at most. The release removes one audit objection and demonstrates the project is not archived, but it creates no Laravel integration path. New action: route this package to the Symfony review track for a fresh look, since it is now plausibly installable in a Symfony 6 codebase — that is the one genuinely actionable outcome of v4.0.0.

Integration Approach

Stack fit — none for Laravel; newly viable for Symfony. For Laravel, the correct components remain Sanctum (first-party SPA/mobile token auth, cookie-based, minimal ops) or Passport (full OAuth2, only with real grant/scope/third-party-client needs). For a Symfony 6 service, the comparison set is now symfony/security-bundle with the native authenticator system plus lexik/jwt-authentication-bundle — and this package is at least eligible to be in that comparison rather than excluded on sight. It still has to win on merit against a bundle with an actual maintainer team, which on current evidence it will not.

Migration path — extract the pattern, not the dependency. Sequence, lightly revised:

  1. Spike (1–2 days): read the v4 source to harvest the token claims shape, login-form flow, and any hardening. Do not install it into a Laravel app — it cannot go there. For a Symfony service, a throwaway install is now legitimate as a fit test.
  2. Decide build vs. buy: default to Sanctum on Laravel; default to lexik on Symfony. Escalate to hand-rolled JWT only for a hard requirement neither meets (e.g. cross-service stateless verification against a shared public key, or interop with an existing JWT-consuming gateway).
  3. If building: TokenService (issue/verify/refresh) on lcobucci/jwt, custom guard via Auth::extend, middleware on the API group, and tests for expiry, tampering, algorithm pinning, and revocation before it touches a real login route.
  4. Security review by someone outside the implementing pair — non-negotiable, and more necessary against a freshly rewritten upstream if you are mining it for design.
  5. Rollout behind a feature flag with a dual-auth window.

Compatibility — improved for Symfony, unchanged as a blocker for Laravel. The symfony/guard conflict and its composer audit pollution are gone, which was the concrete resolution-failure risk. But the package still cannot be installed into a Laravel application in any meaningful sense, so "compatibility" for this portfolio's stated stack does not move. Verify the exact PHP floor before assuming alignment with a Laravel 10/11 (8.1/8.2) or Symfony 6.4 (8.1) runtime.

Sequencing — do not re-open the Laravel evaluation. The temptation on a version bump is to re-run the spike. That spends days re-confirming a conclusion that the release notes cannot change: a Symfony bundle does not become a Laravel package by targeting Symfony 6. Timebox a 1-day source read for the delta, close the Laravel question as unchanged, and open a separate, short Symfony-track ticket if any Symfony service is in the estate.

Operational Impact

Maintenance — you still inherit 100% of it. One release after 3.5 years is not a cadence. 8 stars and 0 dependents still means no downstream users filing or fixing bugs; adoption remains functionally a fork, with you owning security patches and PHP/framework upgrades. The maintenance thesis is now testable rather than settled: track whether issues get triaged and a 4.0.x follows in the next two quarters. That is the cheapest possible diligence, and it costs nothing to wait.

Support — effectively absent, unchanged. No documentation beyond a README, no issue triage, no community corpus. v4.0.0 ships a one-line release note with no upgrade guide, which is itself a support signal: if the maintainer will not document a breaking auth rewrite, they will not document your 2am failure either.

Scaling — unchanged. Stateless verification is cheap and horizontally friendly; the moment you need logout-everywhere or incident revocation you reintroduce shared state (Redis denylist) and a per-request lookup, eroding the stateless benefit. Plan for it before it is an incident, not after.

Failure modes — one retired, one added:

  • Retired: EOL symfony/guard in the transitive graph with no upstream fix path.
  • Added — silent verifier regression from the v3→v4 auth rewrite. An algorithm-pinning or claim-validation gap introduced in the Guard→authenticator migration would ship with no CVE, no advisory, and no dependents to notice. This is the highest-probability new risk and the reason a Symfony-track evaluation must read the diff, not the release note.
  • Added — release-notes-as-only-changelog. Breaking changes communicated in a single sentence; assume undocumented behavior changes exist and diff the source.
  • Carried over: expired token with no refresh → forced re-login UX cliff; key compromise with no rotation → mass invalidation requires a denylist you may not have built; algorithm confusion / alg: none → full auth bypass if the verifier trusts the header; denylist outage → fail-open (revoked tokens accepted) or fail-closed (total auth outage), pick deliberately and document; clock skew → intermittent, hard-to-reproduce 401s.

Ramp-up — low to read, high to own, unchanged. A mid-level engineer understands the code in a day. The real burden is JWT security semantics — algorithm pinning, key management, revocation, threat modeling — and it is identical whether you adopt this package or write forty lines on a maintained library. The difference is that the maintained library ships security patches from people who do this full time, and this one shipped a silent auth rewrite in a one-line note.

Bottom line for the portfolio review: the 0.13 score should move modestly to roughly 0.20–0.25, not to an adopt. Reject on fit — unchanged, it is a Symfony bundle and v4.0.0 reinforces that rather than addressing it. The lifecycle objection is partially retired (EOL dependency removed, project demonstrably not archived) but not settled; one release is not a cadence. Risk concentration is unchanged in kind and arguably higher in the near term, because the auth path was just rewritten with no one checking. The durable takeaway remains the architectural pattern — signed JWT for the API, session or token guard for the login form — implemented on Sanctum, or on a maintained JWT library for a genuine stateless requirement. Open a separate ticket against the Symfony track; keep the Laravel verdict closed.

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.
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
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console