1. Go to this page and download the library: Download motomedialab/compliance 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/ */
motomedialab / compliance example snippets
// app/Models/User.php
namespace App\Models;
use Motomedialab\Compliance\Traits\Compliance;
use Motomedialab\Compliance\Contracts\HasCompliance;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements HasCompliance
{
use Compliance;
// ... your other model code
}
// config/compliance.php
return [
'models' => [
App\Models\User::class => [
// The column to check
'column' => 'last_login_at',
// How old the record must be to be considered for deletion
'delete_after_days' => 365 * 3, // 3 years
// The grace period between being marked and being deleted
'deletion_grace_period' => 15 // 15 days
],
],
];
// app/Models/User.php
use Illuminate\Database\Eloquent\Builder;
class User extends Authenticatable implements HasCompliance
{
use Compliance;
/**
* Override the default query to only find users who have never logged in.
*/
public function complianceQueryBuilder(): Builder
{
// Use the newQuery() method on the model for a clean builder instance.
return $this->newQuery()->whereNull('last_login_at');
}
}
// app/Models/User.php
class User extends Authenticatable implements HasCompliance
{
use Compliance;
/**
* This method is the final gatekeeper.
* Only return true if the record can be safely deleted.
*/
public function complianceMeetsDeletionCriteria(): bool
{
// Don't delete if the user is an admin or has an active subscription.
if ($this->is_admin || $this->hasActiveSubscription()) {
return false;
}
return true;
}
}
// app/Listeners/NotifyUserOfPendingDeletion.php
namespace App\Listeners;
use Illuminate\Support\Facades\Mail;
use App\Mail\AccountDeletionWarning;
use Motomedialab\Compliance\Events\ComplianceRecordPendingDeletion;
class NotifyUserOfPendingDeletion
{
public function handle(ComplianceRecordPendingDeletion $event): void
{
$user = $event->record->model;
$deletionDate = $event->record->deletion_date;
// Send an email to the user
Mail::to($user)->send(new AccountDeletionWarning($user, $deletionDate));
}
}
// app/Models/Log.php
namespace App\Models;
use Motomedialab\Compliance\Traits\Compliance;
use Motomedialab\Compliance\Contracts\HasCompliance;
use Illuminate\Database\Eloquent\Model;
class Log extends Model implements HasCompliance
{
use Compliance;
}