Kütüphane Tanıtımı
Laravel uygulamalarında duyarlı model özelliklerini otomatik olarak maskelemek için bir paket olan laravel-attribute-mask ile tanışın. Bu paket, e-posta, telefon ve metin maskeleme için yüksek derecede yapılandırılabilir kurallar sunar.
Özellikler
- Otomatik özellik maskeleme
- E-posta, telefon ve metin maskeleme desteği
- Yapılandırılabilir maske karakteri ve görünürlüğü
- Küresel veya her bir özellik için maskeleme kuralları
- Telefon alanlarının sütun adı ile otomatik tanınması
Kurulum
Paketi yüklemek için aşağıdaki komutu kullanın:
composer require irabbi360/laravel-attribute-mask
Ayrıca, yapılandırma dosyasını yayımlamak için:
php artisan vendor:publish --tag="attribute-mask-config"
Yapılandırma
Varsayılan yapılandırma dosyasındaki ayarlar (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,
],
];
Kullanım
Maskeleme Özelliklerini Tanımlama
HasMaskedAttributes trait’ini ekleyin ve maskelemek istediğiniz özellikleri maskables() yöntemi ile tanımlayın:
use Irabbi360\LaravelAttributeMask\Concern\HasMaskedAttributes;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasMaskedAttributes;
/
* Get the attributes that should be masked.
*/
protected function maskables(): array
{
return ['email', 'phone', 'phone_number', 'ssn'];
}
}
Ayrıca, $maskable özelliğini kullanabilirsiniz:
class User extends Model
{
use HasMaskedAttributes;
protected array $maskable = ['email', 'phone', 'ssn'];
}
Maskeleme Davranışı
Özellikler otomatik olarak alma işlemi sırasında maskelenir:
$user = User::find(1);
$user->email; // t[email protected]
$user->phone; // 123 90
$user->ssn; // 123 *789
Orijinal Değerlere Erişim
Maskelenmemiş değeri getOriginal() ile alabilirsiniz:
$user->getOriginal('email'); // [email protected]
Veya geçici olarak maskelemeyi devre dışı bırakabilirsiniz:
config(['attribute-mask.enabled' => false]);
$original = $user->email;
config(['attribute-mask.enabled' => true]);
E-posta Maskeleme
E-posta maskeleme davranışını yapılandırın:
'email_masking' => [
'show_domain' => true,
'show_start' => 2, // İlk 2 karakteri göster
'show_end' => 2, // Son 2 karakteri göster
],
Örnekler:
Telefon Maskeleme
Telefon alanları sütun adı ile otomatik olarak tanınır. Görünürlüğü yapılandırın:
'phone_masking' => [
'show_start' => 3,
'show_end' => 2,
],
Örnekler:
1234567890→123 90+1-555-123-4567→+15- *-67
Özel telefon kalıplarını ekleyin:
'phone_masking' => [
'patterns' => ['phone', 'mobile', 'whatsapp', 'fax'],
],
Metin Maskeleme
Diğer metin özellikleri için:
'text_masking' => [
'show_start' => 3,
'show_end' => 3,
],
Örnekler:
secretpassword→sec rdAPI_KEY_12345→API *345
Özel Maske Karakteri
Maske karakterini genel olarak değiştirin:
'mask_char' => '#', // Sonuç: [email protected] → t##[email protected]
Maskelemeyi Devre Dışı Bırakma
Genel olarak devre dışı bırakma:
'enabled' => false,
Veya geçici olarak:
config(['attribute-mask.enabled' => false]);
$email = $user->email; // Maskelenmemiş değer döner
Test
Paketinizi test etmek için:
composer test
Kaynak kodu buradan bulabilirsiniz.
Paketi beğendiyseniz, Github‘da yıldız vermeyi unutmayın.
Kaynak: Orijinal Makale


