mmoollllee/filament-consent-control
Filament Consent Control adds configurable cookie and privacy consent management to Filament panels, with ready-made banners, preference controls, and admin tools to help Laravel apps meet GDPR requirements.
Assessment: conditional pilot — low blast radius, non-trivial compliance exposure. v0.1.0 is an optional admin convenience layer, not a required dependency. The core message ("a single config file is still all you need") means adoption risk is capped: if the plugin proves immature, you drop it and keep the underlying runtime. That materially lowers the cost of trying it. What raises the stakes is the domain — consent gating is a legal control, not a UI nicety. A silently ungated embed is a compliance incident, so immature tooling in this path deserves more scrutiny than its 0.1.0 version number alone would suggest.
Architecture fit. Three-layer stack: consent-control (npm runtime, browser), laravel-consent-control (PHP/Laravel integration, auto-pulled), and this package (Filament v5 admin surface). The separation is sensible — presentation/admin concerns are isolated from the consent decision logic, and the npm runtime remains the single source of truth for gating behaviour. The data-src blocked-markup pattern is the standard, correct approach: content is inert in the DOM until the runtime hydrates it post-consent. Fits a standard Laravel + Filament panel with no bespoke infrastructure.
Integration feasibility. Straightforward for a team already on the target stack: composer require, two vendor:publish calls, plugin registration. Registration is a no-op until opt-in, so the install itself is inert — you can ship the dependency and enable features later. Requirements are strict but coherent: PHP 8.2+, Laravel 11.28+/12, Filament 5.
Technical risk.
setConsentIframe), but it confirms the editor integration is the least-settled surface — and an asset/markup version skew is precisely how that class of bug recurs.Key questions for the maintainer / your own team.
ConsentControlPlugin::make()->settingsPage() with the eloquent driver publish a migration, and is the settings read cached (and invalidated on save)?youtube-nocookie pass your Content-Security-Policy?Stack fit. Only viable if your admin panel is Filament 5 on Laravel 11.28+/12 and PHP 8.2+. On Filament 3/4 this is a hard no — no backport path exists, and none is signalled. For teams already on the target stack, fit is clean: it is a panel plugin plus an editor action plus an optional settings page, all opt-in.
Migration path. Two distinct migrations:
<iframe> markup and will not be gated. Stored content must be re-authored through the plugin (or scripted into the data-src / .consent-message--wrapper shape) before you rely on gating. Budget for a content audit, not just a deploy.Compatibility. Pin Composer constraints narrowly (exact minor on the Filament plugin, caret on the base package) and treat every upgrade — including patch releases — as a change requiring a staging smoke test of the editor and the render path. Verify the npm runtime version actually shipped to the browser matches the PHP-side expectations; the fixed JS/PHP command mismatch is the canary.
Sequencing.
settingsPage() in staging against a non-production DB; confirm migration, caching, and permission behaviour.Maintenance. You inherit a three-package dependency chain with three release cadences, on top of a young Filament major. Realistic ongoing cost is small but recurring: someone must watch releases, re-publish assets, and re-test the editor after each Filament or plugin bump. At v0.1.0 expect at least one breaking change before 1.0; do not float the version constraint.
Support. Best-effort upstream, no SLA. Compliance questions ("is this enough for GDPR/ePrivacy?") will land on your team regardless of what the package does. Assume you own the audit trail, consent-record retention, and any counsel sign-off; scope the package as a UI facilitator only.
Scaling. Server-side load is negligible — settings reads plus editor saves. Two things to watch:
eloquent driver backs the settings page, ensure reads are cached and invalidated on save; a per-request settings query in the render path is an avoidable cost on high-traffic pages.Failure modes (ranked by consequence).
data-src. Highest severity; mitigate with content audit and a review rule.Ramp-up. Low for a Filament-fluent developer: roughly half a day to the end of step 4 in the sequencing above, plus the content audit, which is editorial effort rather than engineering and is usually the real cost. Two audiences need briefing: developers (upgrade ritual: composer update → re-publish assets → smoke test editor) and content editors (always insert embeds via the RichEditor action, never paste raw iframe HTML). Absent a documented path for the second, assume it will be violated.
How can I help you explore Laravel packages today?