origami/consent

Helper interface for user consent in laravel projects
20,629 3
Install
composer require origami/consent
Latest Version:2.5.0
PHP:^8.2
License:MIT
Last Updated:Jan 24, 2026
Links: GitHub  ·  Packagist
Maintainer: papertank

Laravel Consent Build Status

About

The origami/consent helper package contains a Laravel model trait to make saving, comparing and revoking consent easier. The package saves all updates to consent to the consent table and provides a GivesConsent trait for models like the User model.

The necessity for the package came about through GDPR and the UK Information Commissioner's Office guidance on "Consent".

Installation

This package is designed for Laravel >= 10.0. You can pull in this package through composer.

composer require origami/consent

You should publish the consent table migration with:

php artisan vendor:publish --provider="Origami\Consent\ConsentServiceProvider" --tag="migrations"

The migrate the database:

php artisan migrate

Usage

To use the package, add the GivesConsent trait to a model you'd like to track consent for.


use Origami\Consent\GivesConsent;

class User extends Model {

  use GivesConsent;

}

Give consent

You can mark explicit consent given like this:

$model->giveConsentTo('consent-name');

GDPR requires you to keep a record of exactly what was shown at the time. You can do this in the text attribute, and pass anything extra in meta

$model->giveConsentTo('consent-name', [
  'text' => 'You are consenting to ...',
  'meta' => [
    'ip' => '192.168.0.1',
  ]
]);

Give consent

You can revoke a user's consent like so:

$model->revokeConsentTo('consent-name');

Checking consent

You can check if consent is given like so:

if ( $model->hasGivenConsent('consent-name') ) {

}

If consent has not been set, the default is false. You can change that in the 2nd paramter.

if ( $model->hasGivenConsent('consent-name', true) ) {

}

Current consent

You can get the user's current consent status like so. This will be an instance of Origami\Consent\Consent

$consent = $model->getConsent('consent-name');

Contributing

Please submit improvements and fixes :)

Author

Papertank Limited

License

View the license

Related Packages

gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

631,580,251 9,707
laravel/framework

The Laravel Framework.

580,311,802 34,925
laravel/tinker

Powerful REPL for the Laravel framework.

489,754,436 7,444