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 Banhammer Laravel Package

gerenuk/filament-banhammer

Filament Banhammer brings ban management to Filament admin panels, letting you ban and unban users, schedule bans, and block banned accounts from accessing your app. Manage moderation directly from Filament with dedicated resources and controls.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

v2.0.0 materially changes the architectural shape of this package, and mostly in a direction that closes the biggest gap in the prior assessment. The release bundles three things that matter: a Filament v5 upgrade, "fix broken actions," and new authorization, IP, and country blocking. The latter two are the significant additions — the package is no longer just model-level ban state rendered as an admin UI, it now reaches into the request/network layer (IP matching, geo-based denial). That is a broader blast radius but also a genuine trust-and-safety capability rather than a CRUD wrapper.

The architectural question from the prior review — where does enforcement live? — is now partly answered, but must be re-asked in a harder form. Authorization and IP/country blocking imply an enforcement hook, not just persisted columns. If it ships middleware or a guard-level check, it may now cover web login, which is a real upgrade over v1.2.0. But that also means the package is now positioned where a bug is a security failure, not a UI annoyance. The "false sense of security" risk is higher in v2.0.0 than in v1.2.0, because the feature surface promises more.

Integration feasibility

The version story is the headline and it is a gating constraint, not a detail. The filament/filament requirement moved from ^3.2 to ^5.7 — a two-major-version jump in a single release, with no intermediate branch. Concretely:

  • If we are on Filament 3 or 4, v2.0.0 is not installable. We are pinned to v1.2.0, which is now a dead branch.
  • Filament 5 is itself new; adopting this package may force a Filament major upgrade (and the whole panel/plugin API migration that entails) as a prerequisite.

That inverts the sequencing: previously "verify constraints first" was a one-line check. Now it is a decision about whether the package drives our Filament roadmap. Mechanically, install remains composer require + publish + trait + plugin registration, but the "half-day spike" estimate only holds if we are already on Filament 5.

Technical risk

  • Breaking major with no migration guide in the notes. The changelog mentions "fix broken actions" without detail. The v1→v2 diff touches actions, authorization, and deps. Treat this as a rewrite until proven otherwise; read PR #50 rather than the notes.
  • Scope expansion without proportional validation. IP and country blocking introduce geo-IP resolution, IP storage, and network-level denial — each a new failure domain. Country blocking in particular requires a geolocation data source, its freshness, and a defined behavior when resolution fails.
  • Dependency jump risk. Moving to ^5.7 on Filament means the package is tracking upstream's newest major on a one-maintainer cadence. If Filament 6 lands, expect the same pattern.
  • CI signals improved but ambiguous. The release is dominated by Dependabot bumps across actions and composer-install — this proves automated dependency hygiene and an active Actions setup, which partially answers the "is there a CI matrix" question. It does not prove a test matrix across Laravel/PHP/Filament versions. Presence of automation is not presence of coverage.
  • Org-owned, still single-maintainer. Gerenuk-LTD suggests a company-backed repo rather than a personal one, which is a mild bus-factor mitigant; all substantive commits still trace to one author.
  • Privacy surface. Storing IPs and country decisions for banned users is personal data. Retention, lawful basis, and deletion-on-unban are now in play — a compliance question this package almost certainly does not answer.
  • License still clean (MIT), so vendoring/forking remains the primary mitigant, and is now more attractive given the Filament 5 lock-in.
  • Adoption is still unknown. No new dependent or popularity data accompanies the release; the prior low-maturity signal is unchanged.

Key questions

  1. Does v2.0.0 support Filament 4 at all, or is v5.7 a hard floor? Is there a maintained 1.x/4.x branch?
  2. Where does enforcement now live — middleware, guard, login controller, or Filament-only? Does IP/country blocking apply to existing sessions or only new authentication?
  3. What geolocation source backs country blocking, is it bundled or BYO, and what is the fail-open/fail-closed behavior when lookup fails or the DB is stale?
  4. Are IP bans exact-match, CIDR, or range-based, and does it handle IPv6 and proxy/X-Forwarded-For trust correctly?
  5. Does v2.0.0 now invalidate sessions and API tokens at ban time, or still only block new logins?
  6. What does "authorization" cover — Filament policy gating on who may ban, or downstream authorization of banned users? These are very different features.
  7. Is the v1.2.0 → v2.0.0 upgrade path documented — schema changes, config key renames, published asset/migration changes?
  8. What is IP data retention and is it erasable on unban (GDPR/DSAR)?
  9. Does the test suite in CI actually run against multiple Laravel/PHP versions, or just one? What is coverage on the enforcement path?
  10. Are the new blocking features optional/off by default, so a minimal adoption is still possible?

Integration Approach

Stack fit

Fit is now binary rather than graded. Filament 5.7+ and Laravel-version-aligned: strong fit, and the IP/country features may let us retire a hand-rolled middleware. Filament 3 or 4: no fit for v2.0.0; the package becomes a vendored fork of v1.2.0 or is dropped. Multi-tenant, multi-guard, and API-first caveats from the prior assessment still apply and are not addressed by these notes.

Migration path

  1. Confirm our Filament version before anything else. This is now a go/no-go, not a compatibility note.
  2. Read PR #50, not the changelog. The changelog does not describe the schema or config delta; the PR does.
  3. Diff published assets and migrations between v1.2.0 and v2.0.0 in a scratch branch — assume new columns/tables for IP and country state.
  4. Decide on scope. Adopt incrementally: ban state + UI first, then IP, then country. Do not enable geo-blocking on day one.
  5. Attach trait / register plugin against Filament 5 in a throwaway panel; verify actions actually render (the notes admit actions were broken).
  6. Backfill existing status columns into the new representation with the old column retained read-only until cutover, as before.
  7. Layer enforcement independently. Even with v2.0.0's apparent auth hooks, write our own deny-check test at the login path. Trust the test, not the feature list.
  8. Data-handling review on IP storage before production: retention window, access controls, erasure on unban.

Compatibility

Pin the exact Filament 5 minor and run a CI job against it. Verify geo-IP dependency doesn't collide with anything already resolving IPs (analytics, rate limiting, WAF). Check proxy/CDN header handling — a country block that reads the wrong IP is worse than none. Re-verify interaction with spatie/laravel-permission, Sanctum, SoftDeletes, and impersonation, all of which were open questions before and remain so.

Sequencing

Filament upgrade decision (may be weeks, not days) → v2.0.0 spike → enforcement verification at every entry point → IP feature → country feature (last, with geo-IP review and privacy sign-off) → trust & safety UX/audit review → phased rollout behind a feature flag with a kill switch. The critical path just got longer: previously the gating decision was "does enforcement work"; now it is "are we willing to move to Filament 5 for this."

Operational Impact

Maintenance

Unchanged in character, increased in scope. One maintainer, now under a company org, shipping a major that tracks Filament's newest major. Vendoring into our monorepo remains the recommended posture — arguably more so now, because the Filament 5 floor means upstream will always be ahead of us and we cannot follow on our own schedule. The added IP/country code also means our fork inherits a geo-IP dependency we would not otherwise have chosen.

Support

Still no vendor, SLA, or visible security disclosure process. This matters more in v2.0.0: the package now makes security decisions (deny access by network origin). It belongs on the security-critical inventory, and PR #50 review is effectively our security review. Country-blocking correctness should be treated as a security control with an owner, not a feature toggle.

Scaling

Runtime cost rises but stays modest. A geo-IP lookup per authentication event is the new addition — cache aggressively, and never do a per-request lookup for every authenticated request if the block is enforced in middleware. The prior correctness concern stands and grows: ban and IP-block changes must invalidate session and cache state, and with two independent block dimensions there are now more paths to a stale allow.

Failure modes

  • Silent bypass — still the highest severity, and now with more surface: a ban recorded but the login path unchanged, or an IP rule configured but not enforced.
  • Fail-open geo lookup — geolocation provider down or database stale, and country blocks silently stop applying. Decide and document fail-open vs fail-closed explicitly.
  • IP misidentification — CDN/proxy headers unhandled, causing wrong-user blocks (denying a shared NAT or a Cloudflare edge IP). This is a new class of failure with real customer impact.
  • Collateral blocking — country bans on shared infrastructure or VPN egress blocking legitimate users at scale.
  • Privacy/retention exposure — IPs retained indefinitely in ban records without a deletion path.
  • Filament 5 upgrade breakage — now the baseline risk rather than a future one; "broken actions" was a shipped defect in this very release.
  • Partial revocation — unchanged: active sessions and API tokens outliving the ban.
  • Dependency lock-in — pinned to a two-major jump with no fallback branch if we need to roll back Filament.

Ramp-up

Developer ramp-up stays low — trait, migration, plugin registration, and now a middleware hook, all idiomatic. The organizational ramp-up increased: trust & safety must now also decide policy for IP and country blocking (are country blocks customer-facing? appealable? time-boxed?), and legal/privacy must sign off on IP retention. Those two conversations, not the code, will pace delivery, and the Filament 5 prerequisite may pace it further still.

TPM recommendation: revise from "proceed with a timeboxed spike" to conditional proceed, gated on our Filament roadmap. v2.0.0 meaningfully strengthens the package — real enforcement surface, automated dependency hygiene, org-backed repo — and the IP/country additions address a genuine trust-and-safety need. But it ships a two-major Filament jump with no migration notes and a self-admitted "fix broken actions," on a single-maintainer base with no visible adoption growth. If we are on or moving to Filament 5, run the spike and plan to vendor. If we are on Filament 3/4 with no upgrade path this quarter, this release is a non-event for us: stay on v1.2.0 as an unmaintained UI helper or build the capability in-house. Either way, do not treat v2.0.0's expanded feature list as proof of enforcement — verify it at the auth layer before an admin ever sees a Ban button.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib