Skip to main content

Content sources

Each document declares a source in config/legal-consent.php:

  • markdown (default) — git-diffable, PR-reviewable .md files under resources/legal.
  • drafts — the admin-maintained draft store. Texts are authored and reviewed per locale in your own screens, and only a reviewed draft set can be released. Opt a document in with 'source' => 'drafts'. See Managing legal texts.

Any other value is your own class implementing Pushery\LegalConsent\Content\LegalDocumentSource, named as the source's driver and resolved from the container.

A custom source is also the operator-identity seam

A custom source is the seam for interpolating operator identity (Impressum, Art. 13 contact, VAT id, jurisdiction) from a single config source at render time: render your own Blade or HTML with the values filled in and return it as an Html-format body — the pipeline hashes exactly what you rendered, so the acceptance proof still covers precisely what the subject saw.

Two rules keep it safe:

  • Pin the $locale you are handed. A source that calls __() on the ambient locale hashes the same text differently per viewer and makes legal-consent:check-drift flap.
  • Give every document a real MAJOR.MINOR.PATCH version. A null version defaults to 0.0.0, which can never gate (the gate compares major versions, and held >= 0 is always true), so always set one on a gating document.