lifeonscreen/nova-google2fa
lifeonscreen/nova-google2fa adds Google Two-Factor Authentication to Laravel Nova. It lets Nova users secure the admin panel with Google Authenticator, QR-code setup, and one-time codes, integrating 2FA into the login flow with minimal configuration.
User2Fa class means custom persistence (tenant-scoped tables, extra audit columns, existing users schema constraints, custom casts or soft deletes) can be supported through configuration rather than a hard fork. That directly de-risks the "we adopt it, then patch it forever" failure mode and keeps the upgrade path to future releases open.Consider it when:
User2Fa model fits or your divergence is limited to schema/behavior that class inheritance can absorb (extra columns, scopes, tenant keys, audit hooks) — this release explicitly supports that.Look elsewhere when:
User2Fa needs are structurally different (e.g., 2FA state must live on an external identity service, or enrollment spans multiple models/services) such that overriding one class becomes a rewrite.To executives / budget owners: Two-factor authentication is a recurring line item in enterprise security questionnaires and a prerequisite for several compliance frameworks. Rather than funding a multi-sprint build of a solved problem, we can adopt a focused Laravel package, integrate it, and put our engineering time into the product features that actually differentiate us. The near-term cost is integration plus a security review; the near-term benefit is unblocking security-gated deals and reducing account-takeover risk. Note the residual risk: this is a small open-source dependency, so we should pin the version, review the code, and carry a fallback plan.
To engineering: This release adds a supported extension point — you can override the User2Fa class — so we can adapt persistence to our existing schema and add audit fields without forking the package or carrying a patch set. That was the main blocker for adoption. Recommended next steps: (1) timebox a spike integrating it against our real user model and tenancy model, (2) review the challenge/verify flow, rate limiting, recovery-code storage, and secret encryption, (3) confirm Laravel/PHP version support and maintenance activity, (4) decide enforcement policy (optional vs. role-mandatory vs. admin-enforced) as a product decision, not an implementation detail, and (5) document the exit path in case we outgrow it. Treat v1.0.x as a young but stabilizing API: pin the version and read changelogs before upgrading, since a 1.0.1-era package may still make breaking changes in minor releases.
To security / compliance reviewers: The scope is deliberately narrow — enrollment, verification, and recovery for a second factor — which keeps the audit surface small and reviewable in-house. The new override hook increases flexibility but also means our customized User2Fa becomes our responsibility to review, particularly around secret storage and recovery-code handling. We will validate these before rollout and record the dependency in our software inventory with a reviewed version pin.
How can I help you explore Laravel packages today?