1. Go to this page and download the library: Download rylxes/laravel-gdpr library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rylxes / laravel-gdpr example snippets
use Rylxes\Gdpr\Contracts\Exportable;
use Rylxes\Gdpr\Contracts\Deletable;
use Rylxes\Gdpr\Concerns\HandlesGdpr;
class User extends Authenticatable implements Exportable, Deletable
{
use HandlesGdpr;
public function exportData(): array
{
return $this->only(['name', 'email', 'phone', 'created_at']);
}
public function eraseData(): void
{
$this->anonymise(['name', 'email', 'phone', 'address']);
}
}
class Order extends Model implements Exportable, Deletable
{
use HandlesGdpr;
public function exportData(): array
{
return $this->only(['id', 'total', 'status', 'created_at']);
}
public function eraseData(): void
{
$this->anonymise(['shipping_address', 'billing_address']);
}
// Child records erased before parent (lower priority = erased first)
public function erasurePriority(): int
{
return 50;
}
}
use Rylxes\Gdpr\Facades\Gdpr;
// Dispatch an export job (user gets email with download link)
$export = Gdpr::export($user);
$export = Gdpr::export($user, 'csv'); // CSV format
// Via Artisan
php artisan gdpr:export 42
php artisan gdpr:export 42 --format=csv
php artisan gdpr:export 42 --sync // Run synchronously
// Initiate erasure with cooling-off period
$request = Gdpr::erase($user);
$request = Gdpr::erase($user, 'delete', 'User requested account deletion');
// Cancel during cooling-off
$request->cancel('User changed their mind');
// Via Artisan
php artisan gdpr:erase 42
php artisan gdpr:erase 42 --force // Skip cooling-off
php artisan gdpr:erase 42 --strategy=delete
// Record consent
$user->recordConsent('marketing', '1.0', $request->ip());
$user->recordConsent('analytics');
// Or via facade
Gdpr::recordConsent($user, 'terms_of_service', $request->ip());
// Check consent
$user->hasConsent('marketing'); // true/false
Gdpr::hasConsent($user, 'marketing'); // true/false
// Revoke consent
$user->revokeConsent('marketing');
// Get all active consent types
$user->activeConsentTypes(); // ['analytics', 'terms_of_service']
// Query consent logs
$user->consentLogs()->active()->get();
Route::middleware('gdpr.consent:marketing')->group(function () {
Route::get('/promotional-offers', [OffersController::class, 'index']);
});
Route::middleware('gdpr.consent:analytics,tracking')->group(function () {
// Requires both analytics AND tracking consent
});
// Prune expired exports and old audit logs
php artisan gdpr:prune
php artisan gdpr:prune --force // Skip confirmation
// Schedule automatic pruning (in app/Console/Kernel.php)
$schedule->command('gdpr:prune --force')->daily();