oluomotoso/nova-google2fa
Add Google Two-Factor Authentication to Laravel Nova. This package brings TOTP-based 2FA to your Nova login flow, letting users enroll with an authenticator app via QR code and confirm a one-time code at sign-in for stronger account security.
Architecture fit. The package is a standard Laravel Nova tool: a Composer package with a Nova tool class, service provider, and auto-discovery that registers via Nova::tools() in NovaServiceProvider. It rides Nova's public extension surface rather than patching core, which is the right shape for this kind of capability — nothing to maintain in our application code beyond config and migrations. Note the scope distinction up front: this secures the Nova admin panel login, not end-user accounts (that's Fortify/Jetstream territory). It fills a real gap, since Nova ships no native TOTP second factor.
Integration feasibility. Mechanically simple. Expect composer require, publish config and migrations (either additive columns on users or a dedicated table), register the tool, optionally add a middleware for challenge enforcement. Realistic spike effort is 1–2 engineer-days, and most of that is validation and manual security testing, not code. The only thing the fork claims to change is Nova 4 compatibility — which sets the evaluation bar: we are adopting an unvalidated patch of a known-good idea, so the diff is the product.
Technical risk. High, and concentrated in provenance rather than code.
pragmarx/google2fa and QR-code dependencies with no upstream security process behind us.google2fa 8.x/9.x moved to PHP 8.1+ and dropped older encrypter paths — version resolution may conflict with our Laravel/PHP pin.Key questions for the maintainer (or for our own source review).
carloscgo/nova-google2fa? One constraint bump, or a reimplementation?google2fa and PHP versions are constrained, and does it tolerate replay/clock drift?Stack fit. Target is Laravel 9/10 + Nova 4 + PHP 8.1/8.2, which matches most current estates. Confirm the composer.json constraints against our actual pins before anything else — Composer will surface conflicts in minutes, and a nova constraint of ^4.0 with a hard google2fa pin is the likely friction point. If we are on Nova 3, this package is irrelevant; if we are planning Nova 5 within the year, that is a reason to prefer a self-owned implementation.
Migration path. Treat this as code we are adopting, not a dependency we are consuming:
composer audit and Dependabot/Renovate so transitive advisories reach us.pragmarx/google2fa directly" — that path removes fork risk entirely and is worth pricing before committing.Compatibility. Migrations must be additive and reversible; verify they do not collide with existing columns if any prior 2FA attempt exists in the schema. Check that the tool registers cleanly alongside our existing Nova tools and that no global middleware is injected (some 2FA packages add a global middleware that can interfere with API routes). Confirm Nova 4's authentication flow — the challenge redirect has to hook the Nova login guard, not the default web guard, or it silently does nothing.
Sequencing.
Do not enforce org-wide until step 3 is signed off by whoever owns security.
Maintenance. No upstream velocity to lean on — assume near-zero. Budget 2–4 engineer-days per year for dependency bumps and Nova upgrade remediation, plus reactive time when google2fa publishes an advisory. The package is small enough that a single engineer can hold the whole thing in their head, which is the main mitigating factor.
Support. No vendor, no SLA, no documentation beyond a README. Effective support model is internal: one named owner, a runbook, and a documented decision record explaining why we forked rather than built. If we cannot staff that owner, we should not deploy this.
Scaling. A non-issue. Verification is one indexed read per login plus an HMAC computation; QR provisioning is a one-time render. Even at thousands of admin logins per day this does not register against any capacity plan. The binding constraint is human, not compute.
Failure modes. Ranked by likelihood-times-damage:
Ramp-up. Engineering ramp is trivial — a Laravel developer is productive in half a day. Organizational ramp is the real cost: this needs a security owner, a comms plan for enforced enrollment, user-facing instructions for authenticator apps, and a documented recovery procedure before the first enforced login. Plan the policy work in parallel with the technical spike, not after it.
Recommendation. Approve for a time-boxed spike only. Do not adopt as-is on the strength of the repository signal — there is none. The decision points that matter are (a) whether the source review shows sane secret storage and recovery handling, and (b) whether we would rather spend roughly a week owning a 200-line implementation than own someone else's abandoned fork. Both are cheap to answer and should be answered before this reaches any admin who cannot afford to be locked out.
How can I help you explore Laravel packages today?