tomatophp/filament-withdrawals
Filament Withdrawals lets you manage withdrawal methods, custom fields, and withdrawal requests directly from your Filament admin panel. Register the plugin, run the installer, and extend forms with custom field types.
App\Models\User + password could surface every user's password hash inside a withdrawal request form. For products under SOC 2, PCI-adjacent, or GDPR review, this is the difference between "evaluate later" and "safe to ship."password, remember_token, anything in $hidden) are now never rendered, even if explicitly listed. That aligns the package with least-privilege expectations auditors ask about, and reduces the chance a non-technical admin misconfigures a form into a leak.relations config key becomes a product-owned surface area: adding a relation field is a deliberate, reviewable config change rather than an ad-hoc form edit. Plan for that as a small ongoing admin/ops responsibility, not a one-time setup.Adopt if:
relations in config/filament-withdrawals.php) and treat additions to it as reviewable changes.Look elsewhere if:
For Executives: "v5.0.1 is a security release and we should take it. It closes a flaw where an admin-configured withdrawal form field could pull sensitive columns — including password hashes — from any database table into an operator-facing screen. That's exactly the kind of finding a security review or auditor would raise against us. The upgrade itself is small: publish a config file and list the specific models and columns we actually want exposed. Cost is hours, not weeks. Two caveats worth knowing: relation-based fields go blank until we list them, so we schedule the config change with the upgrade; and because this package is small and MIT-licensed with limited adoption, we own the responsibility for tracking and applying future security patches — I'd add it to our dependency watch list. Net: the package still saves us roughly 3–6 weeks of withdrawal-workflow build, and post-fix its default posture (hidden fields never shown, allowlist required) is easier to defend in a review than our own custom implementation would be."
For Engineering: "Filament-Withdrawals v5.0.1 — upgrade required, security fix:
::all() on an arbitrary class). A field set to App\Models\User + password exposed password hashes to anyone viewing the withdrawal request form.relations allowlist in config/filament-withdrawals.php; anything not listed renders with no options and is never queried. $hidden attributes are never displayed even if listed. The field editor now offers allowlisted models/columns as server-validated selects.php artisan vendor:publish --tag="filament-withdrawals-config" then populate, e.g. 'relations' => [\App\Models\Bank::class => ['name']].FilamentWithdrawalFormFields, migration/publish tags, ~7 stars, MIT license.
Tradeoff: Filament-only and a single-maintainer dependency we must watch for patches — but still roughly 50% less dev effort than a custom build, and safer defaults than we'd likely ship ourselves."*For Design/UX:
"The UI is unchanged — same polished, consistent withdrawal workflow screens (see screenshots), brandable via register(). One visible difference: relation-style fields that aren't on the security allowlist will appear empty rather than populated. If a flow depends on one, flag it to engineering so the model and column get allowlisted before we ship the upgrade — better an empty dropdown in staging than in production."
How can I help you explore Laravel packages today?