liberusoftware/two-factor-authentication-filament
Adds two-factor authentication to Filament panels. Users enrol via an authenticator app, confirm with a one-time code, and store recovery codes. Includes challenge screens for login, profile pages for enabling or disabling 2FA, and configurable enforcement per panel.
Architecture fit. The package is scoped as a presentation adapter — the Filament-facing layer (pages, resources, form actions, widgets) over a separate two-factor domain module. Architecturally that is the right shape: UI concerns isolated from the authentication domain, so the adapter is thin, replaceable, and testable in isolation. For a TPM this matters because it caps the blast radius — if the adapter is abandoned we can reimplement the UI against the underlying domain service without touching token generation, secret storage, or recovery-code logic. The caveat is that the split only pays off if the core module is genuinely independent; if the adapter smuggles in business logic or reimplements verification flows, the abstraction is cosmetic.
Integration feasibility. Non-trivial but bounded. Realistically this requires: a Laravel application on a Filament-compatible version, the companion 2FA domain package installed and configured, published config and migrations, and panel registration of the adapter's pages/resources. Effort is days, not weeks, for a developer already fluent in Filament — provided the version matrix lines up. The dominant unknown is Filament major-version compatibility (v3 vs v4 APIs diverge substantially around forms, actions, and panel providers). Treat the composer constraints as the first thing to verify, not the last.
Technical risk. High, and concentrated in provenance rather than code quality:
NOASSERTION. This is a procurement blocker, not a footnote. We cannot ship a security-critical dependency into a commercial product without a declared, reviewed license. Resolve before any code is written.liberusoftware/module-* naming pattern suggests a generated or scaffolded family of packages; verify there is real maintenance intent (commit cadence, issue responsiveness) rather than a one-time publish.Key questions.
^3.0-style optimism?Stack fit. Good fit if we have standardized on Filament for admin/internal panels and Laravel for the host application. In that context the adapter gives us a familiar, idiomatic UI for free and avoids hand-rolling enrollment screens — the highest-value part of the package. Poor fit if Filament is incidental to our stack; the adapter then drags in a framework we do not otherwise operate.
Migration path. Do not consume this as a floating Composer dependency. Recommended path:
app/Modules/ with attribution) and pin to a specific commit SHA. Zero dependents means no ecosystem pressure to keep it current; upstream drift is a liability, not an asset.NOASSERTION resolves to something permissive, vendor-and-own is clean. If it resolves restrictively, the correct decision is reference the UX, reimplement the adapter — the presentation layer is the cheap part to rebuild.TwoFactorService), so swapping the underlying domain package later is a binding change, not a rewrite.Compatibility. Validate explicitly against our pinned Filament, Laravel, and PHP versions before committing. Check that published migrations and config keys do not collide with existing schema, and that the adapter's panel registration does not assume a specific panel ID or route prefix.
Sequencing.
Maintenance. We will own this code in practice. Budget for: re-validating the adapter on every Filament major upgrade (roughly annual), and auditing it whenever the underlying domain package changes verification semantics. A vendored fork means merge cost is near-zero, but so is upstream benefit — we should not expect fixes to arrive from the maintainer.
Support. No SLAs, no maintainer responsiveness, no security advisory feed. Our own team is the escalation path. That is acceptable for a UI adapter and unacceptable if the adapter is the only thing standing between users and their second factor.
Scaling. Effectively free — it is a presentation layer over existing auth infrastructure, adds no services, no queues, no storage beyond whatever the domain package already uses. Load characteristics are those of any Filament page.
Failure modes to design against.
Ramp-up. Low for any developer comfortable with Filament — a half-day to read the adapter and its domain dependency. The real ramp is on the security review side: someone must own understanding secret lifecycle, replay windows, clock-skew tolerance, and recovery semantics. Assign that owner explicitly; it is the difference between "we shipped 2FA" and "we shipped 2FA that holds up."
Bottom line for the decision record: this is a low-maturity, unvalidated package addressing a high-consequence domain. Its value is a modest head start on three or four UI screens. Its risk is legal ambiguity plus permanent ownership of a security-critical surface. Fund a short spike and a license/security gate; default to vendoring or reimplementing rather than depending, and do not let zero-stars be the only reason to say no — let the license and security review be the actual gate.
How can I help you explore Laravel packages today?