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

Laravel Gdpr Laravel Package

soved/laravel-gdpr

A GDPR compliance toolkit for Laravel: let users download or delete their personal data, anonymize and encrypt stored personal fields, manage consent, and log data access—so your app meets EU privacy rules without rebuilding core flows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Bottom line: a lightweight, Laravel-idiomatic toolkit that automates the mechanics of GDPR (consent capture, DSAR export, erasure/anonymization, audit logging). It is not a compliance program in a box — legal mapping, data inventory, and processor governance remain yours. At ~300 stars, 0 dependents, and a single maintainer, treat it as a build-vs-fork accelerator, not a strategic dependency.

Architecture fit

  • Ships as a standard Laravel package: service provider, publishable config/gdpr.php, publishable migrations, Eloquent traits applied to subject models, artisan commands for erase/anonymize/export/consent, and queued jobs for long-running DSAR work. This is the correct shape for a Laravel monolith or modular app; it composes naturally with existing auth, queues, and storage.
  • Consent is stored relationally (subject ↔ purpose ↔ version ↔ timestamp), which is the right primitive for proving "informed, specific, withdrawable" consent — provided you also persist policy version and the UI text shown at capture.
  • Export/erasure are model-driven via config, not automatic reflection. That is a feature (predictable blast radius) and a cost (the config is the product — it must be hand-authored from a real data map).

Integration feasibility

  • Low install friction: composer require, publish config/migrations, add traits, run migrate. A competent Laravel dev reaches a working consent + export flow in days.
  • Real effort is not the package — it is the data inventory (which tables hold PII, which are legally retained, which are hard-deletable vs. anonymizable). Expect the majority of engineering time in that mapping and in tests, not in integration.
  • Export format, column selection, and anonymization strategy are all config surfaces that need legal and security review before they touch production.

Technical risk (ranked)

  1. Scope gap vs. regulatory surface. The package does not cover RoPA/records of processing, DPIAs, processor/DPA registers, transfer mechanisms (SCCs), DSAR identity verification, breach notification timelines, or cookie/adtech consent (TCF, Google Consent Mode v2). Budgeting the package as "GDPR done" is the primary failure mode.
  2. Bus factor 1. MIT + recent release mitigates this (you can fork/vendor), but there is no vendor SLA. Pin the version, vendor the source if you rely on it for legal evidence.
  3. Erasure vs. retention conflict. Hard deletes break referential integrity and can violate statutory retention (invoices, tax, employment). Anonymization must be selective and irreversible; a misconfigured column list is a silent PII leak or an unrecoverable data loss.
  4. PII export security. DSAR bundles are high-value targets — require encrypted-at-rest storage, short-TTL signed URLs, authorization on the download route, and audit of who downloaded.
  5. Evidence integrity. Application-level log tables are mutable by anyone with DB access. For defensibility, stream consent/erasure events to append-only or WORM storage (SIEM, object lock, or DB triggers).
  6. Coupling and upgrade drift. Published migrations and model traits couple your schema to the package. Upgrades may collide with your migration history; wrap the facade in your own service layer to preserve an exit.

Key questions to resolve before commitment

  • What is our exact Laravel/PHP/DB matrix, and does the package's composer.json constraint (and CI) actually cover it?
  • Do we already have a RoPA/data map, or is the config going to be guesswork?
  • Which regimes are in scope (EU GDPR, UK GDPR, CCPA/CPRA, sectoral)? They diverge on erasure exceptions and opt-out vs. opt-in.
  • Which records are legally retained and therefore must be anonymized, not deleted?
  • Is there adtech/cookie use requiring TCF or Consent Mode integration beyond this package?
  • Who signs off legally — DPO, external counsel, or security? What is the acceptance artifact?
  • Multi-tenant or white-label? How are consents scoped and isolated per tenant?
  • What is our exit plan if the package is abandoned in 18 months?

Integration Approach

Stack fit

  • Best fit: Laravel (verify supported major versions against composer constraints) on PHP 8.x, MySQL or PostgreSQL, Redis-backed queues, S3-compatible storage for exports. Works in monoliths and modular monoliths; not designed for polyglot or serverless-first architectures.
  • Verify up front: UUID/ULID primary keys, non-standard user table names, existing soft-delete conventions, and whether your subject identifiers are stable across merges (account merge = consent lineage problem).

Migration path (brownfield is the normal case)

  1. Data inventory first. Produce a table-by-table PII map: subject key, PII columns, retention class (hard-delete, anonymize, retain-legal), exportable set. This becomes the config.
  2. Install behind an adapter. Add a thin internal PrivacyService that wraps the package facade/traits. Your controllers and jobs call the adapter only; this is your replacement and upgrade insurance.
  3. Consent capture. Define purposes in config; instrument every form/API that collects data with a purpose-scoped consent record plus the policy version hash. Backfill: do not fabricate historical consent — record "no consent on file" explicitly.
  4. DSAR endpoints. Build request intake (subject authentication/verification, 30-day SLA timer) around the package's export/erase commands; the package executes, you own the workflow and the audit trail.
  5. Erasure/anonymization. Implement as queued jobs with dry-run mode and a mandatory report artifact. Sequence anonymization before deletion of parent records to preserve FKs.
  6. Cookie/consent banner (if the package's front-end middleware is used) — wire it to the same consent store so there is one source of truth.
  7. Evidence pipeline. Ship consent and erasure events to append-only storage; add a scheduled job for consent retention/cleanup.
  8. Cookie/adtech — integrate TCF or Consent Mode separately if adtech exists; the package is not a substitute.

Compatibility and sequencing notes

  • Run the package's migrations in isolation and check for table-name collisions before promoting past staging.
  • Pin the version in composer.json; enable Dependabot but gate upgrades behind the integration test suite.
  • Build integration tests over your actual model graph (a fixture user with orders, invoices, support tickets, audit logs) — the package's own tests cannot validate your config.
  • Order of go-live: internal consent capture → export (low risk, read-only) → anonymization (dry-run) → destructive erasure (last, with approvals).

Operational Impact

Maintenance

  • Low runtime footprint: one config file, a handful of tables, scheduled commands. Ongoing engineering is mostly reacting to your own schema changes — every new PII-bearing model or column requires a config update plus a review. Treat the config as a reviewed artifact (code owners: privacy + backend).
  • Budget for a fork contingency. If the package goes quiet, a mid-level Laravel engineer can maintain a vendored copy; the risk is not abandonment of the code, it is abandonment of your config correctness.

Support

  • No vendor SLA. L1/L2 is yours. Legal/compliance questions will come to engineering unless a DPO owns triage — define that boundary early or engineering becomes the de facto privacy desk.
  • Expect recurring "why can't we delete this record?" tickets; the retention-class table from the data map should be the shared reference.

Scaling

  • Consent logs grow monotonically and are the volume driver. Partition or archive by date; index on (subject_type, subject_id) and purpose. At high traffic, writes to the consent table sit on the critical path of every form submission — keep it a single fast insert, not a transaction spanning side effects.
  • Exports and erasures are naturally bursty and PII-heavy: queue them, cap concurrency, rate-limit per subject, and store bundles in a separate bucket with lifecycle expiry (e.g., 7–30 days).
  • Multi-tenant deployments multiply both volume and isolation requirements; a missing tenant scope on a consent query is a cross-customer data exposure.

Failure modes to instrument

  • Anonymization job partially applied → some PII remains, request marked complete. Mitigate with idempotent, per-record jobs and a verification pass.
  • FK violation on hard delete → erasure stalls silently. Alert on job failure rate and on any request exceeding the SLA window.
  • Scheduled cleanup not running → retention breach (data kept longer than policy allows), which is itself a violation.
  • Lost or corrupted consent records → inability to demonstrate lawful basis. Back up consent tables under a longer retention than the app DB.
  • Export link leakage → PII exposure. Signed URLs, short TTL, download audit log.
  • Config drift between environments → erasure behaves differently in prod than staging. Diff config in CI.
  • Account merge/delete edge cases → orphaned polymorphic consent rows.

Ramp-up

  • One Laravel engineer: ~1–2 days to a working consent + export flow in a sandbox.
  • Realistic program: 2–6 weeks elapsed for data map, legal review, config authoring, DSAR workflow, and integration tests — dominated by legal/compliance cycles, not code.
  • Steady state: ~0.1–0.2 FTE for maintenance plus a standing privacy review per release that touches PII. The package removes maybe 60–70% of the plumbing and roughly 0% of the judgment. Plan and staff accordingly.
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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core