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 Jetstream Passport Laravel Package

headerx/laravel-jetstream-passport

Integrates Laravel Passport with Jetstream to add OAuth2 API token management to your Inertia/Vue app. Provides ready-made UI for creating, viewing, and revoking personal access tokens and managing API clients alongside Jetstream's existing profile features.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Package: headerx/laravel-jetstream-passport — bridges Laravel Jetstream's authentication/teams scaffolding with Laravel Passport's OAuth2 server.

Architecture fit: The package occupies a narrow but legitimate seam: Jetstream ships an opinionated auth stack (Fortify, Sanctum for API tokens, Livewire/Inertia front end), while Passport provides full OAuth2 (authorization code + PKCE, client credentials, personal access tokens). Teams that need third-party OAuth2 clients and want Jetstream's UI cannot get there without glue code. This package is that glue. It is an integration/adapter layer, not infrastructure — value is inversely proportional to how much custom wiring we'd otherwise write, and that wiring is typically 1–2 weeks of consent-screen, client-management, and guard configuration work.

Integration feasibility: High on paper, unverified in practice. Composer-installable, Laravel package conventions (service provider, config, publishable views). No data was supplied on composer.json constraints, test coverage, CI status, or install base, so feasibility is inferred from the release notes alone. The v1.0.2 addition of an authorize view is the single most consequential signal in this release: the OAuth2 authorization/consent screen is where Passport integrations most often force teams into forking vendor views. Shipping a first-party, overridable authorize view removes that fork and is the concrete reason to consider this release.

Technical risk: Moderate, concentrated in three areas.

  1. Abstraction-surface risk. Jetstream is a scaffolding package by design — it publishes code into the app and expects you to edit it. Any package that "integrates" with Jetstream is coupling to generated, user-mutable files and to Jetstream's internal view/route naming. Upstream Jetstream minor releases have historically reshuffled these.
  2. Passport/Sanctum overlap. Jetstream defaults to Sanctum. Introducing Passport means dual token systems, dual middleware, and a decision about which guard protects which route group. Getting this wrong produces silent auth failures, not loud ones.
  3. Release hygiene. A new view was added in a patch release (v1.0.0 → v1.0.2), and v1.0.1 is absent from the changelog. Neither is disqualifying, but together they suggest ad-hoc release discipline, which raises the cost of pinning and the risk of surprise view overrides.

Key questions:

  • What are the composer.json constraints for laravel/framework, laravel/jetstream, and laravel/passport? Does it support the Laravel and Jetstream majors we run today, or one behind?
  • Does the authorize view publish to resources/views/vendor/... (overridable, upgrade-safe) or is it rendered from the package with no publish hook (fork required to customize branding/consent copy)?
  • Does the package assume the Livewire or the Inertia Jetstream stack? Does it support both?
  • Is Passport coexistence with Sanctum documented, or does installation require disabling Sanctum?
  • Test suite, CI matrix, and PHP/Laravel version coverage — and is the maintainer count still effectively one?
  • What changed in v1.0.1? It is omitted from the provided notes.

Integration Approach

Stack fit: Best fit is a Laravel app on Jetstream that has a hard requirement for OAuth2 authorization-code flow with third-party clients — i.e., we are the identity provider, not merely a consumer of someone else's OAuth. If our requirement is only first-party SPA or mobile tokens, Sanctum alone is lighter and this package is unnecessary scope. If our requirement includes OIDC (discovery, ID tokens), Passport is already a partial answer and this package neither helps nor hurts — budget separately.

Migration path: Treat as greenfield-only for the auth layer in v1. Adopting it on an app with live Sanctum tokens means a token migration and a guard cutover, which is a multi-sprint change with user-visible re-authentication. On a new build, it is an install-and-configure step taken before any Passport client is registered, so the authorize view is in place from the first consent prompt rather than retrofitted.

Compatibility: Pin the package version explicitly and pin Jetstream and Passport majors alongside it — a floating constraint on any of the three will eventually resolve into an untested combination. Verify the authorize view against our branding and consent copy before wiring real clients; consent-screen changes are a compliance surface (what the user is told they are granting), so it should go through the same review as a terms change, not be treated as styling.

Sequencing:

  1. Spike in a throwaway Jetstream app: install, register a confidential client, complete an authorization-code exchange end to end. Timebox to two days; abandon if the authorize view cannot be overridden without forking.
  2. Decide and document the guard model (Passport for OAuth2 routes, Sanctum or session for first-party) before writing feature code.
  3. Diff the package's authorize view against Passport's upstream view and record exactly what it changes — this is the artifact we maintain if we ever have to drop the dependency.
  4. Only then adopt in the target app, with the view published into our repo and version-controlled.
  5. Defer production rollout until we have answered the composer.json constraint questions; do not schedule dependent work against an unverified Laravel-major claim.

Recommendation: Adopt in a spike now, adopt in production only after step 1 passes and the package version is pinned. The v1.0.2 authorize view is a genuine reason to prefer this over hand-rolled glue; the release notes are not sufficient evidence of maintenance health to justify adopting without the pin and the fork-exit plan.

Operational Impact

Maintenance: Low run-rate, non-zero. The package itself is small; the ongoing cost is tracking three upgrade cadences (Laravel, Jetstream, Passport) and confirming the package keeps up. Jetstream majors are the likely break point, since Jetstream's published-file model makes adapter packages brittle. Budget roughly a half-day per Laravel major and a full day per Jetstream major, plus the cost of re-validating the published authorize view after any Passport upgrade — that view is now our code, and Passport's own consent view can change.

Support: Single-maintainer risk is the dominant operational concern. There is no vendor, no SLA, and no evidence supplied of a contributor base beyond the one named author. Mitigation is the fork-exit plan from Integration step 3: because the package is thin and we have published its view into our repo, the realistic worst case is absorbing a few hundred lines. That is an acceptable blast radius — but it must be written down, with a named owner, before adoption. Add the repo to the dependency-watch list so an archive or a stalled Laravel-major gap surfaces as a ticket rather than an incident.

Scaling: Auth-path throughput is Passport's concern, not this package's; the adapter adds no meaningful per-request overhead beyond normal view rendering on the consent screen. Scaling risk is organizational, not technical: OAuth2 client registrations, secret rotation, redirect-URI allowlists, and scope governance become a process we own. Plan for client inventory and secret rotation before the third or fourth integrating team shows up, not after.

Failure modes:

  • Silent guard conflict — Passport and Sanctum both active, wrong middleware on a route group, tokens rejected without a clear error. Highest-probability failure; mitigate with an explicit guard matrix in the app's auth docs and an integration test per route group.
  • Consent-screen regression — an upstream Passport or Jetstream upgrade silently replaces or fails to render the published view. Symptom is a broken or default-branded authorize page during a live OAuth flow, which is user-facing and blocks new client onboarding.
  • Dependency drift — a floating constraint resolves to an untested Jetstream/Passport combination; failures appear as view-not-found or method-not-found deep in the auth flow.
  • Maintainer abandonment — no immediate breakage, but the next Laravel major arrives with no compatible release and the fork-exit becomes urgent rather than planned.
  • Patch-release surprise — a feature landing in a patch version means a ~1.0 constraint can pull in view changes without a deliberate review.

Ramp-up: Half a day for a Laravel-fluent engineer to install, register a client, and walk the authorization-code flow. The real ramp is conceptual, not package-specific: engineers need a working model of Passport's grant types, the difference between first-party and third-party token issuance, and where consent fits. Budget two to three days of the team's time to get that shared understanding and document the guard model — that document, not the package, is what keeps the integration healthy.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core