alexandergabriel/filament-oauth2
A Filament plugin that brings OAuth2 authentication to your admin panels, letting users sign in through external providers like Google or GitHub. Integrates OAuth2 login flows with Filament's auth system for smoother single sign-on with minimal setup.
Architecture fit. The package is now identified: AlexanderGabriel/filament-oauth2, a Filament plugin that adds OAuth2 authentication to a Filament panel. That sharpens the fit assessment considerably and adds a hard precondition the previous evaluation could not state: we must already be on a supported Filament major, not just a supported Laravel major. Filament's own release cadence (3.x → 4.x carried breaking changes) is now a second, independent version constraint layered on top of Laravel's. Because the plugin sits directly in the admin authentication path, it is not a library-level dependency — it is a component on the login path of our internal tooling, with the blast radius that implies. If we do not run Filament, the assessment terminates here.
Integration feasibility. Filament plugins register through a panel provider (->plugin(...)) rather than a bare service provider, so integration is a small, well-understood code change — but the package almost certainly also publishes config for OAuth client credentials, and likely either publishes a migration or alters the users table to store provider/subject identifiers. That combination moves it from "facade + config" to "schema + external service + auth flow." Feasibility now depends on three things outside the package: (1) registering a redirect URI and client credentials with our IdP, (2) agreeing an account-linking policy (what happens when an OAuth identity's email matches an existing local user), and (3) a break-glass local login path so an IdP outage cannot lock administrators out of the panel. None of these are addressed by installation.
Technical risk. Ranked:
v1.1.0...v2.1.0, so the notes span the entire 2.x line. We cannot tell what 2.1.0 changed versus what 2.0.0 broke. Config key renames and migration changes between 1.x and 2.x are likely and undocumented.league/oauth2-client/Socialite transitive constraints.Key questions. Which Filament majors and Laravel majors does 2.1.0 declare, and are we on one? What actually changed in v1.1.0...v2.1.0 — read the compare diff, not the notes field. Does 2.1.0 publish migrations or modify the users table? How does it link an OAuth identity to an existing user, and does it verify email before doing so? Does it use Socialite or its own OAuth client, and are those pinned? Does it support OIDC/our IdP, or only a fixed provider list? Is there a documented security contact or SECURITY.md? Does the panel still allow password login so IdP failure is not a lockout? Commit recency and issue-response cadence over the last 12 months?
Stack fit. Filament application, Composer, staged environments, an existing IdP (Okta/Entra/Auth0/Keycloak or similar). The package introduces an external runtime dependency — the IdP — into the login path. That is an infrastructure-adjacent commitment, not a library install, and it needs a named owner.
Migration path. Still greenfield (no prior installed baseline), but the sequencing changes because the risk is in the auth flow rather than in boot-time overhead. Order: (1) confirm the Filament/Laravel version match — stop if it fails; (2) read the v1.1.0...v2.1.0 compare diff and enumerate config keys, migrations, and user-model changes; (3) register a staging OAuth client with the IdP and confirm redirect URI and scopes; (4) install on a scratch branch, diff published config and migrations against our schema, and confirm whether the users table is altered; (5) decide and document the account-linking policy before enabling the flow; (6) confirm local password login remains available as break-glass.
Compatibility. Pin to exact 2.1.0 for the first integration, then ^2.1 after a passing baseline. Verify declared constraints against composer.lock before merging — Filament constraints are the likely conflict source. Critically, check support for the next Filament and Laravel majors we plan to adopt; a plugin pinned to the current Filament major becomes a blocker at our next admin-panel upgrade, and this is the dependency most likely to lag.
Sequencing. Version-matrix check first, then diff review, then IdP registration, then scratch install, then staging soak with real credentials and a real IdP round-trip (success, denial, expired state, duplicate email, IdP-down), then production gated by environment or panel rather than a runtime feature flag — login-path gating is awkward, so prefer enabling on a non-critical panel first. Keep provider registration isolated in a single panel-provider block and config in our own published file so removal is a one-file change.
Maintenance. Now two upgrade taxes, not one: Laravel majors and Filament majors, plus package majors. Budget three reviews per year minimum. Because release notes are auto-generated, each review means reading a diff across the whole 2.x line — that is the single largest ongoing cost and the strongest argument for building a thin in-house OAuth flow on Socialite instead. Weigh that explicitly.
Support. No commercial support. Escalation is the public tracker plus our own reading of the source. Given this is authentication code, the absence of a stated security disclosure process is the most serious operational finding: a vulnerability would surface as a public issue, and we would have no private channel. Confirm license terms and whether a SECURITY.md exists before adoption. Per our own prior rule — auth-touching dependencies with weak maintenance signals are a hard no unless we accept ownership.
Scaling. Per-request overhead is not the concern; this code runs only on login and callback routes. The scaling question is operational: how many admin users, whether the IdP has rate limits or latency on the callback path, and whether a token-refresh or session-lifetime behaviour interacts with our existing session config. Load testing is largely irrelevant here; failure-mode testing is not.
Failure modes. Expect: IdP outage or misconfigured redirect URI locking admins out (mitigated only by a verified break-glass local login); account takeover via unverified-email linking; silent breakage at the next Filament or Laravel major; config key renames between package majors breaking the callback with a redirect-loop rather than a clear error; migration collisions if the package touches the users table we already own; session/cookie mismatch behind a proxy or load balancer that rewrites the callback host. Add CI that fails on unexpected lockfile drift and a runbook entry for "admins cannot log in."
Ramp-up. Low to install, materially higher to operate safely. A competent Laravel/Filament engineer gets the plugin registered in an hour; the account-linking policy, IdP registration, break-glass path, and failure-mode testing are the real work — call it two to three days including staging validation. One engineer must own it and write an internal note covering the pinned version, the linking policy, the break-glass procedure, the IdP client registration, and the diff-review upgrade procedure, because the maintainer's release notes will not tell the next person anything.
How can I help you explore Laravel packages today?