Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel User Verification Laravel Package

jrean/laravel-user-verification

Adds email verification to Laravel out of the box: a trait and migration for a verified flag, token-based verification emails, routes and middleware to protect verified-only areas, plus configurable events and redirects. Easy to drop into existing user models.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • Single-purpose, opinionated package: adds a verified flag to the users table, a trait on the User model, routes, a controller, and a verification notification. All state lives in the app database — no external service, no new infrastructure.
  • Fits a conventional Laravel monolith with Blade/session auth and server-rendered flows. Fits poorly with API-only/SPA backends (Sanctum/JWT), headless frontends, or architectures where identity is federated via SSO/OIDC — the package assumes a session guard and redirect-based UX.
  • Overlaps directly with Laravel core: since 5.7 the framework ships MustVerifyEmail, the verified middleware, signed verification URLs, and the VerifyEmail notification. Laravel 13 (the target of this release) does not change that calculus. For any Laravel ≥5.7 target, this remains a buy-vs-build question the framework already answers for free.

Integration feasibility

  • Mechanically cheap: composer require, publish config and migration, add the trait, override the notification view. Roughly 1–2 developer-days including tests and staging validation.
  • Main friction points are collision risks: an existing verified column, a hand-rolled verification flow already in production, or trait/method conflicts with MustVerifyEmail.
  • New in v14.0.0: a package-major bump tied solely to a framework-major bump ("Laravel 13"). That release shape strongly implies a one-to-one version-to-Laravel-major tracking strategy. Integration feasibility is unchanged for a greenfield L13 app, but the upgrade path now carries cost: every Laravel major forces a coordinated package major, which may carry config, migration, or trait changes. Confirm the published migration is still additive before assuming a drop-in bump.

Technical risk

  • Redundancy risk (high, unchanged): the package's core capability is a first-class framework feature. Adopting it converts a zero-dependency concern into a third-party maintenance liability. v14 does nothing to change this — it adds parity with a framework version, not capability.
  • Maintenance signal (downgraded from elevated to moderate): v14.0.0 shipping with Laravel 13 support is a genuine positive signal. It corroborates a 2026 timeframe and resolves the earlier 2026-04-28 timestamp anomaly — the project is being released, not merely timestamped. Active framework tracking is the single strongest argument for this package. 0 dependents remains likely an instrumentation gap and is now the weaker of the two signals.
  • Version-support risk (new, high): a major-version-per-Laravel-major model raises an immediate question of whether v13.x continues to receive patches for apps on L11/L12, or whether v14 is L13-only. If the package only supports the newest framework major, adopting it couples our Laravel upgrade calendar to the maintainer's release cadence — a single-maintainer bottleneck on a framework upgrade path.
  • License risk (blocking, unchanged): NOASSERTION means automated license scanning cannot classify the package. Even if the repo claims MIT, legal/compliance sign-off is required before it ships in a distributed product or a regulated environment. A new release does not remediate this.
  • Security surface: token generation, single-use enforcement, expiry, and resend throttling are the classic failure points here. Must be read in code, not assumed from the README. Treat the v14 major as a fresh security review — do not carry forward a prior read-through.
  • Abandonment risk: single-maintainer pattern typical of this package class. v14 meaningfully reduces the near-term probability but not the blast radius: if the project stalls mid-cycle, a future Laravel major becomes blocked by an unpatched dependency.

Key questions

  • Does v14.0.0 support only Laravel 13, or L10/L11/L12/L13? This is now the gating question for the whole evaluation.
  • Will the v13.x line continue to receive security patches, and for how long? What is the stated support policy per major?
  • What broke between v13 and v14 beyond the framework constraint — config keys, migration, trait signature, notification contract?
  • Does it replace or coexist with MustVerifyEmail? Can we run it for a legacy cohort while new signups use native verification?
  • Are tokens single-use, expiring, and rate-limited on resend? Any CVE or advisory history?
  • What is the actual license text, and is it compatible with our distribution model (SaaS vs. redistributed binary)?
  • How hard is it to localize and rebrand the verification email?

Integration Approach

Stack fit

  • Good: Laravel 5.x–8.x-era applications, session auth, MySQL/Postgres, queue-capable mail delivery, English-first product. v14 raises the floor to Laravel 13 — so it now fits only apps already on, or moving to, the newest framework major.
  • Poor: API-first or headless backends, SSO-delegated identity, multi-tenant products with per-tenant mail domains, or anything already on MustVerifyEmail. Also poor for any app pinned below L13 that wants to stay on a maintained branch.

Migration path

  • Path A — modern Laravel (still recommended): do not adopt. Use native MustVerifyEmail + verified middleware. Zero dependency, zero license question, identical end-user UX, framework-owned upgrade path.
  • Path B — legacy application with no verification, or a half-built custom flow: this package is a credible, time-boxed shortcut. Adopt behind an internal EmailVerification interface so the implementation can be swapped to native later without touching call sites. The wrapper is now more important, not less: a package that majors in lockstep with the framework guarantees periodic forced upgrades.
  • Path C — already running an earlier package version: do not take v14 as a routine bump. Treat it as a re-evaluation: re-run the license gate, re-read the token handling, and confirm the v13.x branch is still patched before deciding to stay put.

Compatibility

  • Pin an exact version; run it through our CI matrix rather than trusting the README's version table. The v14 release note is one line — it is not a compatibility statement.
  • Verify the published migration is idempotent against any pre-existing verified column and that it does not alter column semantics (nullable vs. default false) in a way that breaks existing queries. Re-verify specifically on v14.
  • Check route registration against our existing routes/web.php namespace and middleware groups, and diff the config file against the previous major.
  • Confirm our Laravel upgrade window aligns with the package's release lag. A package that ships "Laravel 13 support" only after L13 GA introduces a gap where we are on an unsupported combination.

Sequencing

  1. Gate 0 (blocking): license classification still fails automated scanning — unchanged. Stop here if it fails.
  2. Gate 1 (new, blocking): parse the v14 version-support matrix and the support policy for prior majors. If v14 is L13-only and v13.x has no patch commitment, record that as an accepted upgrade-cadence coupling before proceeding.
  3. Spike: branch on L13, publish config/migration, wire trait, deliver one verification email to a seeded staging user. Measure time-to-first-email and inspect the token in the payload. Diff config and migration against v13.
  4. Security read-through: token lifecycle, expiry, reuse, resend throttling — fresh review, not a carry-forward. Document in a decision record.
  5. Wrap and flag: implement behind the internal interface with a feature flag; enable for new signups only.
  6. Observe: send rate, completion rate, resend volume, bounce handling.
  7. Decision gate at 30 days: if native parity is reachable, retire the package.

Operational Impact

Maintenance

  • Small code footprint, but the lifecycle cost sits with us. v14 sharpens this: the package now majors in step with Laravel, so our framework upgrade is no longer a routine composer update — it is a coordinated major-version migration with a dependency we do not control. Budget a named internal owner and reserve maintenance capacity in every Laravel upgrade cycle. Vendor-watch for advisories and keep a fork contingency plan.

Support

  • Community-only, no SLA. Support volume will concentrate on "the email never arrived" — deliverability, spam filtering, corporate gateways — which is our problem regardless of package choice. Expect the first-line runbook to be about mail infrastructure, not this code.

Scaling

  • Runtime cost is negligible: one token write, one mail send, one lookup. Queue the notification. The real scaling constraint is mail provider throughput and sender reputation, plus throttling on any resend endpoint to prevent abuse-driven cost.

Failure modes

  • Token reuse or missing expiry → account takeover exposure.
  • Bounced mail with no self-serve recovery → permanently locked-out users and support tickets.
  • Silent breakage after a framework upgrade → verification quietly stops working. Elevated by the v14 pattern: the package must ship a new major for each framework major, so the window between our upgrade and a supported package version is a real outage risk. Needs a synthetic monitor, not just unit tests.
  • Abandonment during a PHP/Laravel upgrade → a security patch we cannot apply. v14 lowers the near-term likelihood but this remains the worst case and the reason for the interface wrapper.
  • Version-stranding (new): if the maintainer ships a new major and stops patching the previous one, apps on older Laravel are left on an unmaintained branch with no in-place remedy.

Ramp-up

  • Engineering ramp is under a day for a mid-level Laravel developer; the package is not the cost. The cost is organizational: legal review, a fresh security read of the token handling on the new major, and a written decision record justifying a third-party dependency for a capability the framework now ships natively — plus an explicit policy for how we handle the recurring framework-major coupling.

Bottom line for the roadmap: the recommendation is unchanged. Default to native Laravel email verification. Use this package only as a scoped bridge for legacy applications, wrapped behind an interface with an explicit exit criterion. What changed: v14.0.0 is a meaningful positive maintenance signal — the project is alive and tracking framework majors, which retires the abandonment concern from "elevated" to "moderate" and resolves the anomalous release timestamp. But it introduces a new structural risk rather than removing the old redundancy risk: a package-major per framework-major model makes our Laravel upgrade path contingent on a single maintainer's release cadence, and it narrows supported targets to L13. A ~19 composite score and an unclassified license still read as "tactical utility, low strategic opportunity" — now with a stronger vendor signal and a harder upgrade coupling.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings