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

Oauth Bundle Laravel Package

spawnrad/oauth-bundle

spawnrad/oauth-bundle provides OAuth authentication support for PHP applications, making it easier to connect external providers, manage access tokens, and streamline login and authorization flows. Configure providers quickly and keep OAuth integration organized in one reusable bundle.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. As a TPM, the first thing to flag is a positioning mismatch that is itself a decision input. The description markets spawnrad/oauth-bundle as "a Laravel package," but the underlying code is a fork of HWIOAuthBundle, which is a Symfony bundle. There is no Illuminate\Support\ServiceProvider, no Laravel package-discovery entry, no publishable config/oauth.php, and no facade. It does not occupy the architectural slot that "Laravel OAuth package" describes. The only genuinely portable parts are the standalone Resource Owner value objects (provider response → normalized user), and those are useful as a specification of provider quirks, not as a runtime dependency.

Integration feasibility. Low, and the cost is front-loaded. A direct composer require in a Laravel app will pull Symfony components that collide with Laravel's own pinned transitive Symfony packages (http-foundation, console, finder, etc.) — expect resolver conflicts on Laravel 10/11. There is no documented PHP or Laravel version constraint, no CI matrix, and no evidence (0 dependents) that anyone has run this in production in any framework. For planning purposes this is an unknown-effort item, which should be treated as a negative, not a neutral.

Technical risk. Three high-severity risks that a TPM should put in front of engineering leadership:

  • Provenance / supply-chain. A personal fork of a credential-handling security library, with no stated divergence rationale. We would inherit the author's commit rights, not upstream maintainers'. This is an audit finding waiting to happen on the authentication path.
  • Abandonment decay. OAuth libraries rot quickly — provider endpoint changes, Twitter/X OAuth 1.0a removal, Google's OIDC migration, PKCE mandates. An unmaintained fork will silently fail in production, typically discovered via support tickets rather than monitoring.
  • Blast radius. This code sits on login. There is no higher-impact surface in the product.

The 32.83 opportunity score is consistent with the metadata: nothing here supports a roadmap commitment.

Key questions (to put to the engineering sponsor before any further spend):

  1. What is the diff against upstream hwi/oauth-bundle, and is there any commit newer than upstream's last release?
  2. Who owns maintenance, and what is the CVE-response and provider-breakage policy?
  3. Which providers do we actually need, and are they all covered by Socialite core drivers or socialiteproviders/*?
  4. If specific Resource Owner classes are the draw, can we port those MIT-licensed classes into an internal Socialite custom provider instead of adopting the bundle?
  5. Does the team already hold Symfony DI/security expertise, or are we buying a skills investment to satisfy a dependency we did not want?

Integration Approach

Stack fit. Treat this repository as a reference implementation and provider catalog, not a dependency. The realistic Laravel target is laravel/socialite plus community socialiteproviders/* drivers for anything outside the core set, and an internal custom Socialite provider for genuinely unsupported IdPs. That keeps us inside idioms the team already owns and inside the framework's security-patch cadence.

Migration path.

  1. Inventory providers. Enumerate every OAuth/OIDC provider in scope and map each to: Socialite core driver · socialiteproviders driver · unsupported. This alone usually resolves the decision.
  2. Gap-fill via custom providers. For the unsupported remainder, implement Socialite's AbstractProvider contract (getAuthUrl, getTokenUrl, getUserByToken, mapUserToObject), using this repo's Resource Owner classes as the field-mapping specification. Typically a few hundred lines per provider.
  3. Avoid the bundle runtime unless a specific, articulable reason emerges (e.g., an OAuth 1.0a handshake Socialite cannot express). If that case appears, isolate it behind our own adapter interface so it is swappable.
  4. If the bundle is truly unavoidable, the only defensible pattern is a separate Symfony service exposing a token-exchange HTTP endpoint that the Laravel app calls — never load the bundle's DI container inside the Laravel application.

Compatibility. Pin and validate against current Laravel LTS and PHP minor; require the integration to survive composer update on both sides. Vendor (with attribution) any extracted Resource Owner classes into our own namespace so upstream abandonment cannot block our framework upgrades.

Sequencing (three-week decision arc).

  • Week 1: Provider inventory + Socialite coverage matrix. Deliverable: a go/no-go on "we can build this with Socialite."
  • Week 2: Spike one custom Socialite provider for the highest-value unsupported IdP, using this repo as spec. Validate token refresh and error paths.
  • Week 3: Decision gate — extracted providers vs. build from provider docs directly. Adopting the bundle as a runtime dependency requires a documented, signed architecture exception, not a default.

Operational Impact

Maintenance. Effectively we become the maintainer of anything we vendor. Zero stars, zero dependents, and a personal-fork origin means no upstream release cadence to ride. Ongoing cost is provider churn — OAuth endpoints and scopes change a few times a year across a broad provider set. Budget recurring engineering time, not a one-time integration line item.

Support. No commercial support, no issue-tracker momentum, no Stack Overflow corpus for spawnrad/oauth-bundle. Troubleshooting reverts to upstream HWIOAuthBundle docs, which describe Symfony wiring we will not be using — a persistent documentation/architecture mismatch that inflates the cost of every support interaction and every new engineer's first incident.

Scaling. OAuth handshakes are low-volume, latency-tolerant traffic; this package is not a scaling bottleneck — but it also delivers no scaling value. The scaling-relevant surfaces (token storage, refresh scheduling, state/session management) live in our application, not in the package.

Failure modes and mitigations.

  • Silent auth breakage when a provider changes response shape or deprecates a grant. Mitigation: provider-integration tests against sandbox credentials; login success rate as an SLI with alerting.
  • Dependency resolution failure on Laravel/Symfony minor upgrades, blocking routine security patching. Mitigation: don't take the runtime dependency; pin and re-validate on a schedule.
  • PHP runtime deprecations with no upstream fix path. Mitigation: ownership must be staffed before adoption, not after.
  • Supply-chain compromise via an unmaintained fork on the credential path. Mitigation: no runtime dependency; if any code is extracted, vendor it with attribution, review the diff, and treat it as first-party code under our security review.

Ramp-up.

  • High for Laravel engineers if the bundle is taken as a runtime dependency — Symfony compiler passes, tagged services, and security firewalls are non-transferable to their daily model.
  • Low for the extracted-provider path — a Socialite custom provider is a familiar, well-documented pattern most Laravel developers can own within a sprint.

TPM bottom line. Leverage this package as documentation and reference code, not as a dependency. Adopt Laravel Socialite (+ SocialiteProviders) as the runtime, port the specific Resource Owner mappings we need, and require an explicit architecture exception before any Symfony-bundle runtime enters the Laravel application. The decision to surface to stakeholders is not "which OAuth package" — it is "we do not take unmaintained forks onto the authentication path," and this assessment is the supporting evidence for that position.

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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
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