metaclass-nl/authentication-guard-bundle
Symfony bundle for integrating guard-based authentication into your application. It helps wire custom authentication guards into Symfony Security so you can protect routes and control how users are authenticated, with straightforward configuration and reusable guard support.
Architecture fit: fundamental mismatch. This is not a Laravel package — it is a Symfony 2 bundle (MetaclassAuthenticationGuardBundle) built against the Symfony Security component's authentication provider/guard pipeline. Laravel's authentication stack (Illuminate\Auth\Guard, SessionGuard, RequestGuard, middleware-based throttling) shares no contracts, interfaces, or extension points with it. There is no adapter layer, no service provider, and no Laravel-facing facade. The concept — tracking failed authentication attempts and blocking brute-force/dictionary attacks — is portable; the code is not. Treat any claim of "Laravel/PHP package" fit as a categorization error in the source inventory.
Integration feasibility: near-zero as a dependency, moderate as a reference. Installing it into a Laravel application would pull Symfony 2-era components (symfony/security, symfony/http-kernel, symfony/dependency-injection) into a dependency tree that already pins illuminate/* and modern symfony/* transitive packages via laravel/framework. Composer will either refuse to resolve or force downgrades across the framework — unacceptable risk for a security-critical path. Realistically the only viable use is reading the source to extract the attempt-counting and lockout heuristic, then reimplementing it against Laravel's RateLimiter and a cache/DB backing store.
Technical risk: high, and concentrated in the worst possible domain. The repository is archived, last released 2017-09-19, with 12 stars and zero dependents. Symfony 2 reached end of life in November 2018, so the underlying framework receives no security patches; the package itself has had no CVE triage, no PHP 8 compatibility work, and no maintainer. Authentication throttling is a security control, not a convenience utility — adopting unmaintained code here imports supply-chain and correctness risk into the exact surface attackers probe. Vendor risk score (0.105) is consistent with this: effectively a dead artifact.
Key questions for the requester:
Stack fit: do not install. Reimplement. For a Laravel target, the idiomatic equivalent is a combination of RateLimiter in a login controller or a dedicated ThrottleLoginAttempts middleware, backed by the cache store, plus optional IP/account-keyed counters and a lockout table for auditability. First-party options — Laravel Fortify's built-in login throttling, or laravel/throttle — already cover the common case and are maintained. The bundle's contribution is essentially a policy shape, not novel mechanism.
Migration path (concept extraction):
RateLimiter::for('login', ...), Cache::increment, or a login_attempts table.config/auth.php; the translation cost exceeds a clean reimplementation by an order of magnitude.Compatibility: PHP version constraints from 2017 will likely block PHP 8.x outright; Symfony 2 components conflict with Laravel 9+/10+/11+ constraints. Even composer require --ignore-platform-reqs produces an untestable, unsupported state.
Sequencing: Confirm the target framework and threat model first (day 1). If Laravel is confirmed, close out the package evaluation as "reference only" and produce a one-page policy spec plus a middleware ticket. If Symfony 2 is the real target, escalate to a modernization decision — the bundle does not fix the underlying EOL problem.
Maintenance: Effectively infinite relative to value. Archived with no maintainer means any bug, CVE, or PHP incompatibility is yours to fix. Forking a 2017 Symfony bundle to run in a modern Laravel context is a rewrite, not a maintenance transfer — budget it as greenfield work with a misleading provenance.
Support: None. No issue triage, no release cadence, no security advisory channel. For a control that sits directly in the login path, absence of a disclosure channel is disqualifying on its own.
Scaling: The design pattern (per-attempt counter in shared storage) scales adequately if the counters live in Redis rather than per-node memory; per-node counters silently under-count behind a load balancer, weakening the control exactly when traffic is highest. Any reimplementation must key counters in shared state and account for multi-region drift.
Failure modes to design against:
X-Forwarded-For only from known proxies, or IP-keyed throttling collapses to a single key.Ramp-up: Trivial for a Laravel engineer to reimplement the policy (half a day to a day including tests); the effort is entirely in getting the policy right, not in the code. There is no ramp-up cost for the package itself because the package should not be adopted.
Recommendation: Reject as a dependency; retain only as a design reference. Record the framework mismatch in the package inventory and correct the "Laravel" classification to prevent a repeat evaluation.
How can I help you explore Laravel packages today?