Пакет Laravel Attribute Mask від Fazle Rabbi автоматично маскує конфіденційні атрибути Eloquent-моделей під час їх отримання. Це зручно, коли потрібно показати часткові дані — наприклад, email, phone або іншу чутливу інформацію — не розкриваючи повних значень.
Основні можливості
- Автоматичне маскування атрибутів під час отримання
- Вбудована підтримка типів маскування: email, phone і text
- Налаштовуваний символ маски та параметри видимості
- Глобальна конфігурація або правила на рівні атрибуту
- Автовизначення поширених назв полів для телефонів
Визначення атрибутів для маскування
Щоб почати, додайте трейд HasMaskedAttributes до моделі й вкажіть, які атрибути слід маскувати, через метод maskables() або властивість $maskable:
use Irabbi360\LaravelAttributeMask\Concern\HasMaskedAttributes;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasMaskedAttributes;
// Alternatively, use the property syntax:
protected array $maskable = ['email', 'phone'];
protected function maskables(): array
{
return ['email', 'phone'];
}
}
Як працює маскування
Після налаштування звернення до маскованих атрибутів повертає вже замасковане значення:
$user = User::find(1);
$user->email; // t**t@example.com
$user->phone; // 123****90
Отримання оригінальних значень
Щоб отримати оригінальне незамасковане значення, використовуйте метод getOriginal():
$user->getOriginal('email'); // test@example.com
Параметри конфігурації
Опублікований файл конфігурації (config/attribute-mask.php) дозволяє керувати поведінкою маскування та налаштувати її під ваші потреби:
return [
'enabled' => true,
'mask_char' => '*',
'email_masking' => [
'show_domain' => true,
'show_start' => 1,
'show_end' => 1,
],
'phone_masking' => [
'show_start' => 3,
'show_end' => 2,
'patterns' => ['phone', 'phone_number', 'mobile', 'mobile_number'],
],
'text_masking' => [
'show_start' => 3,
'show_end' => 3,
],
];
Масив patterns у phone_masking дозволяє пакету автоматично виявляти поля з телефонами за іменами атрибутів.
Початок роботи
Встановіть пакет через Composer:
composer require irabbi360/laravel-attribute-mask
Опублікуйте файл конфігурації:
php artisan vendor:publish --tag="attribute-mask-config"
Детальніше та код — у репозиторії Laravel Attribute Mask на GitHub.