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

Filament Social Laravel Package

tomatophp/filament-social

Filament Social is a TomatoPHP plugin that brings social authentication to your Filament panels. Add login buttons for providers like Google, Facebook, and GitHub, manage linked accounts, and configure everything with a simple, Laravel-friendly setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a thin, idiomatic Filament panel plugin: one ->plugin(FilamentSocialPlugin::make()) line, published config, published migrations, and all OAuth mechanics delegated to Laravel Socialite. What matters architecturally is where it sits — directly on the panel's login/registration surface and on the user-provisioning path. That is a high-blast-radius, near-zero-differentiation area, which is exactly the profile that justifies a small MIT dependency rather than in-house code. It is plumbing, not an identity platform: no SAML, no MFA, no directory sync, no session lifecycle. If the roadmap ever needs those, this package is not the foundation to build on. The v5 share actions (shareUrl() / shareTitle(), component url / title props) are a separate, much smaller value story — panel-native "share this record" rather than a generic page share.

Integration feasibility. Install effort is measured in hours to days: composer require, publish config/migrations/translations, register the plugin, wire provider credentials, verify route names under the panel path. The real work is not installation — it is four product decisions the package deliberately leaves open: first-login user creation policy, account-linking policy (email-based auto-link is a takeover vector when the provider does not verify email), which providers appear on which panel, and whether tenant panels are in scope at all. Budget engineering time against those decisions, not against the composer require.

Technical risk. Ranked:

  1. Single-maintainer, 14 stars, 0 dependents. No vendor SLA, no dependable CVE process, no commercial escalation. The MIT license gives us a fork option, which is the real mitigation — but only if we have kept the feature behind a seam.
  2. Version lockstep with the Filament major. v5 requires Filament 5 / Livewire 4 / Laravel 12–13 / PHP 8.2+; the Filament 3 line is frozen on v3. The package version is a function of the framework version. This converts a minor dependency into a constraint on our Filament upgrade cadence — or, framed correctly, an input to the upgrade business case.
  3. v5 breaking data-model change. Provider profile moved from users.data to social_auth_users, and unique usernames are now enforced. Any upgrade on a populated database needs a pre-migration dedupe, or the migration fails mid-deploy. Any dashboard, widget, or import script still reading users.data for social fields is silently stale.
  4. Auth-adjacent security surface. Auto-creating panel users from any Google account, or auto-linking a password account to an unverified provider email, are incident queues, not defaults. This needs an explicit written policy before launch.
  5. Tenancy ordering. On tenant panels the callback resolves before tenancy initializes; post-login redirect and tenant context must be validated, not assumed.
  6. Release provenance. Confirm the v5 tag's contents match the changelog and that the tagged code is the code we audit before pinning to production.

Low opportunity signal (~1.99) is consistent with the framing: commodity plumbing with a bounded, real payoff — it should be judged on time-to-ship and reversibility, not on strategic upside.

Key questions for engineering before commitment. Which guard does it authenticate against on our panel? Is the returning-user path covered by the shipped Pest suite, and can we extend it? Can we intercept user resolution (match → link → create) through config/hooks, or does it require subclassing the plugin? What happens on an email collision between a password account and a provider account? Does the callback correctly defer to tenancy initialization on our tenant panel? What is the actual route shape (route:list | grep social) under our panel path? What is the blast radius if the maintainer stops shipping?

Integration Approach

Stack fit. Adopt only if the product standardizes on Filament 5 / Livewire 4 / Laravel 12–13 / PHP 8.2+. On Filament 3 the v3 branch works but is frozen and does not receive the v5 fixes (returning-user login, translatable separators/tooltips via lang_path(), contextual share actions, the removed Tailwind dependency in package views). Therefore the "do we adopt this package?" question is strictly downstream of "which Filament major do we standardize on?" Sequence the framework decision first and treat this package as one line item in that business case.

Migration path. Two distinct paths, scoped separately:

  • Fresh adoption: publish config + migrations + translations, run php artisan migrate, register the plugin on each target panel, wire credentials per environment, verify the redirect URI includes the panel path, complete a click-through, then sign out and sign in a second time. That second login is the cheapest regression test we own and should be an acceptance criterion, not a nice-to-have.
  • v3 → v5 upgrade: dedupe existing usernames before running migrations; repoint every consumer of users.data to social_auth_users; remove Twitter provider config; delete any CSS shims carried for package views; republish translations; re-verify redirect URIs and route names; clear config and cached panel manifests.

Compatibility. Treat the matrix as strict — never mix lines. Redirect URI drift (panel path prefix, APP_URL trailing slash, http vs https) remains the dominant integration failure and should be captured as a generated string logged during setup and pasted into the provider console, not typed. Note that the v5 install command only runs migrations; any v4-era tutorial will leave config and translations unpublished.

Sequencing. Seven steps, in order, each with an exit gate:

  1. Decide the Filament major (blocks everything else).
  2. Timeboxed spike: install on a staging panel branch, one provider, full click-through, second-login test.
  3. Write the provisioning and linking policy — auto-create vs. existing-email-only vs. domain allowlist vs. approval step; whether email-based linking is permitted at all.
  4. Wrap account resolution and sharing behind a small internal adapter/interface so vanilla Socialite is an afternoon swap.
  5. Build first-login provisioning (role assignment, tenant attach, onboarding redirect) and the audit trail behind it.
  6. Ship share actions per record — this is the demoable increment; scope it after auth is stable, not alongside it.
  7. Multi-panel / tenancy enablement last, validated independently per panel.

Operational Impact

Maintenance. A standing, low-but-nonzero line item. Pin ^5.0, read the changelog before every bump — v5 changed both the supported stack and the data model, so minor bumps are not quiet patches. Keep the returning-user test green as the tripwire. Monitor upstream commit activity; if it stalls, the adapter is what makes "fork and own it" a bounded decision rather than a rewrite. The package's own CI (Laravel 12/13, PHP 8.3/8.4, Pest suite) gives us a reasonable early-warning signal without us owning it.

Support. No vendor — support load lands on the platform team, and most of it will be one symptom: "login bounces back to the sign-in page." Write the runbook before launch and route it in that order: config cache staleness → redirect URI mismatch → session state/CSRF → provider error body → guard/panel mismatch → stale panel manifests. Separately, provider-side ops is ongoing ownership, not setup: app registrations, consent-screen branding, verification status, and provider API deprecations (the Twitter removal is precedent — provider lists change on the provider's schedule, not ours).

Scaling. Throughput is a non-issue; auth volume is trivial relative to any panel workload. The real scaling concern is configuration surface: each additional panel multiplies provider configuration, and each additional provider is a distinct credential set, redirect URI, and failure mode per environment. social_auth_users grows linearly with linked accounts — index on (user_id, provider) and read provider payloads from there. Provider outage is the one availability dependency: a social login button that fails ugly is worse than no button, so degrade gracefully and always keep the password path visible.

Failure modes to instrument and document. Misconfigured redirect URI; stale config cache presenting as "provider not configured"; guard/panel mismatch producing an authenticated-but-redirected-to-login loop; state/CSRF failure; null or unverified provider emails; email-collision account takeover in the linking path; unique-username migration failure mid-deploy; tenancy context loss on callback; missing translations surfacing raw keys; stale panel manifests after upgrade. Each should have a named owner and a known remedy in the runbook — this list is the operational risk register for the feature.

Ramp-up. A developer is productive in under a day; the plugin is conventional Filament. Per-provider ops setup is roughly a day each including console configuration and verification. The genuinely time-consuming ramp is the security and policy review — this is auth-adjacent code touching user creation and account linking, and it should be reviewed by whoever owns application security before it reaches production, not after. Plan that review into the sprint, and treat "policy approved, adapter in place, second-login test green, runbook written" as the launch gate rather than "it works on staging."

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast