origami / consent
Helper interface for user consent in laravel projects
Installs: 17 326
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: ^7.2|^8.0.2
- illuminate/contracts: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/events: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^3.8|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- phpunit/phpunit: ^7.0|^8.0|^9.0|^10.0
README
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 >= 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
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 :)