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.
HWIOAuthBundle), this should not anchor a roadmap, a build-vs-buy call, or an architecture commitment. Treat it as a signal to re-evaluate the auth stack decision on its merits, not as a shortcut to close the ticket.socialiteproviders/* for login, or (b) Laravel Passport / Sanctum for first-party API authorization (if we truly need to issue tokens). For Symfony, upstream HWIOAuthBundle. A zero-adoption fork is not a "buy"; it is an unbounded maintenance liability mislabeled as a dependency.Adopt (or extract from) only if all of the following hold:
HWIOAuthBundle for a reason you can state in one sentence — e.g., an internal IdP that upstream will not accept.Look elsewhere — and you almost certainly should — when:
league/oauth2-client with a first-party provider, or a managed IdP (Auth0, WorkOS, Cognito, Clerk) if SSO is not your differentiator.For executives: We evaluated spawnrad/oauth-bundle and recommend against adopting it. It is an unmaintained, zero-adoption fork of an existing Symfony library — advertised as a Laravel package, but not one — with 0 GitHub stars, 0 dependents, and no vendor support. Authentication is the highest-risk surface in the product; a dependency nobody is watching is a liability, not a shortcut. The real cost isn't the install — it's permanently owning a fork on our login path, across every future framework and PHP upgrade. Recommendation: proceed with a maintained, framework-appropriate option — Laravel Socialite (+ socialiteproviders) if the need is social/SSO login, or Passport/Sanctum if the need is issuing tokens for our own APIs. We can still harvest the fork's provider classes as reference material under its MIT license.
For engineering: Two concrete points to take into the sprint. First, framework mismatch is disqualifying as a runtime dependency — this ships Symfony Bundle classes and DI/security wiring, not an Illuminate\Support\ServiceProvider; Composer's Laravel package discovery will not register it, and pulling it in will fight Laravel's pinned symfony/* transitive versions. Second, maintenance risk is structural — 0 stars / 0 dependents means we are the only consumer and own every future CVE, every Symfony major bump, and every provider API change. Proposed path: (1) inventory the IdPs we actually need and map each to a Socialite core driver, a socialiteproviders driver, or "unsupported"; (2) for the gap, implement Socialite's AbstractProvider (getAuthUrl, getTokenUrl, getUserByToken, mapUserToObject) using this repo's Resource Owner classes as the field-mapping spec, vendored into our namespace with attribution; (3) if that's insufficient, open a PR upstream first, and only fork into our repo with a named owner and a documented diff. Any runtime adoption of the Symfony bundle inside the Laravel app should require an explicit, written architecture exception — ideally isolated as a separate Symfony service behind an HTTP boundary, never loaded into Laravel's container.
How can I help you explore Laravel packages today?