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".
This package is designed for Laravel >= 6.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
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;
}
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',
]
]);
You can revoke a user's consent like so:
$model->revokeConsentTo('consent-name');
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) ) {
}
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');
Please submit improvements and fixes :)