eddusoft/filament-access-control-2fa
Filament plugin that adds access control with two-factor authentication, helping you secure admin panels and manage user permissions. Extend Filament resources and panels with 2FA challenges and role-based access restrictions, keeping sensitive areas protected while staying simple to configure.
Architecture fit: Conceptually strong, evidentially weak. The capability described — TOTP 2FA with authenticator apps, recovery codes, and enforcement scoped to users/roles/panels — maps directly onto a gap most Laravel/Filament admin panels have: no MFA in front of the highest-privilege surface in the application. As a TPM, that framing matters more than the code, because "MFA on admin" is a control auditors ask for (SOC 2 CC6.x, ISO 27001 A.9/A.5) and a scope-reduction lever (fewer privileged users to monitor). What cannot be assessed is whether the package actually implements that control safely: there is one release (v1.0.1), it is a rename to enable publishing, and there is no README, changelog, CI, issue history, or version-support matrix in evidence. Treat the security-relevant behavior as unvalidated until a spike reads the source.
Integration feasibility: Mechanically moderate. Filament integration implies a plugin/service provider, a registration call in the Panel provider, middleware on the auth path, published config, and likely a migration for recovery codes and 2FA state on the users table. That is a small surface, but it touches the authentication pipeline, which means the blast radius of a defect is "admins locked out" or "control bypassed," not "styling looks wrong." Two compatibility facts must be established before any estimate: which Filament major is supported (Filament v3 was a breaking rewrite; a package frozen at April 2024 may or may not track it), and which Laravel majors are in the require constraints.
Technical risk: High for the intended use case. Auth code is the one category where low adoption is a security risk rather than just a maturity signal — 0 stars means no community scrutiny of the TOTP verification path, and no evidence of a disclosure process. Specific things a reviewer should demand: recovery codes hashed (not plaintext), TOTP secrets encrypted at rest and not logged, replay protection/drift window bounded, rate limiting and lockout on verification attempts, and no bypass via impersonation, API routes, or console. Supply-chain risk is also elevated: an unpublished-then-renamed package on a critical path, with no maintainer identity that legal or security can hold accountable. Note too that the last release is ~a year old against a fast-moving Filament ecosystem.
Key questions:
Stack fit: Only viable if the answer to question 1 is "yes, our versions." Before that is confirmed, do not slot this into a roadmap — a Filament major mismatch converts a one-day pilot into a fork-and-maintain commitment, which changes the build-vs-buy math entirely.
Migration path: Introduce it as an additive control on an internal, low-traffic admin panel first — never as the initial gate on a customer-facing or payments-adjacent surface. Sequence the rollout so 2FA is optional-then-enforced per panel, not globally on day one, so a defect degrades to "some admins can still get in" rather than "nobody can." For existing installs the rename is the immediate hazard: confirm whether v1.0.1 changed only the Composer name or also the PSR-4 namespace, service provider, config keys, and publish tags; then clear Composer cache, update lock files, re-run package:discover, and re-publish config/migrations against the new tags. Do not run old and new names concurrently.
Compatibility: Verify against a clean Laravel skeleton matching production — PHP version, Laravel major, Filament major, Livewire — plus a check that auto-discovery registers and that publishing migrations doesn't collide with an existing users table (2FA state can live in a separate table; confirm which).
Sequencing:
Maintenance: Effectively unsupported. A single 2024 release with no visible activity means we inherit the maintenance obligation the moment we adopt it on a critical path. Budget the realistic cost: either an engineer-hour per Filament/Laravel upgrade to validate compatibility, or a planned fork. For a TPM, the honest framing is "we are adopting code, not a vendor."
Support: No vendor to escalate to. Support becomes an internal runbook covering: how an admin enrolls, how a lost device is reset (and who authorizes it), how recovery codes are reissued, and how to disable enforcement during an incident. Without that runbook, the first lockout becomes an outage with no documented remedy — this is the single most likely operational failure and it is entirely preventable.
Scaling: Negligible. TOTP verification is a cheap HMAC computation on the login path; there is no request-path, queue, or memory concern at any realistic admin-panel scale. Scaling is not a reason to reject this.
Failure modes:
bootstrap/cache/packages.php — a runtime "class not found," not a deploy-time failure.Ramp-up: Low for the integration itself; high for the decision. Roughly a day of engineering to spike and a few hours of security/TPM review to accept or reject. The TPM deliverable here is not the integration — it is a written decision with a threat model, acceptance criteria, an exit plan (interface + boundary test), and a rollback path, so that when the package is eventually abandoned — the base rate for 0-star, single-release repositories is not favorable — removing it is a scheduled task rather than an incident.
How can I help you explore Laravel packages today?