PHP code example of ashallendesign / redactable-models
1. Go to this page and download the library: Download ashallendesign/redactable-models 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/ */
ashallendesign / redactable-models example snippets
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Contracts\Database\Eloquent\Builder
class User extends Model implements Redactable
{
// ...
public function redactable(): Builder
{
// ...
}
public function redactionStrategy(): RedactionStrategy
{
// ...
}
}
use AshAllenDesign\RedactableModels\Support\Strategies\ReplaceContents;
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Contracts\Database\Eloquent\Builder
class User extends Model implements Redactable
{
// ...
public function redactable(): Builder
{
return static::query()->where('created_at', '<', now()->subDays(30));
}
public function redactionStrategy(): RedactionStrategy
{
return app(ReplaceContents::class)->replaceWith([
'name' => 'REDACTED',
'email' => '[email protected]',
]);
}
}
use AshAllenDesign\RedactableModels\Support\Strategies\ReplaceContents;
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements Redactable
{
// ...
public function redactionStrategy(): RedactionStrategy
{
return app(ReplaceContents::class)->replaceWith([
'name' => 'REDACTED',
'email' => '[email protected]',
]);
}
}
use AshAllenDesign\RedactableModels\Support\Strategies\ReplaceContents;
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements Redactable
{
// ...
public function redactionStrategy(): RedactionStrategy
{
return app(ReplaceContents::class)->replaceWith(function (User $user): void {
$user->name = 'name_'.$user->id;
});
}
}
use AshAllenDesign\RedactableModels\Support\Strategies\HashContents;
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Database\Eloquent\Model;
class Invitation extends Model implements Redactable
{
// ...
public function redactionStrategy(): RedactionStrategy
{
return app(HashContents::class))->fields([
'email',
]);
}
}
use AshAllenDesign\RedactableModels\Support\Strategies\MaskContents;
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements Redactable
{
// ...
public function redactionStrategy(): RedactionStrategy
{
return app(MaskContents::class)
->mask(field: 'name', character: '*', index: 0, length: 4)
->mask(field: 'email', character: '-', index: 2, length: 3);
}
}
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use AshAllenDesign\RedactableModels\Interfaces\RedactionStrategy;
use Illuminate\Database\Eloquent\Model;
class CustomStrategy implements RedactionStrategy
{
public function apply(Redactable&Model $model): void
{
// Redaction logic goes here
}
}
use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use AshAllenDesign\RedactableModels\Traits\HasRedactableFields;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements Redactable
{
use HasRedactableFields;
// ...
}
$user = User::find(1);
$user->redactFields();
use App\Models\User;
use AshAllenDesign\RedactableModels\Support\Strategies\ReplaceContents;
$user = User::find(1);
$user->redactFields(
strategy: app(ReplaceContents::class)->replaceWith(['name' => 'REDACTED'])
);
text
php artisan model:redact
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.