randomparanoia / filament-column-obfuscation
A Filament plugin that allows you to easily obfuscate sensitive data in table columns.
Fund package maintenance!
Luís Canadas
Requires
- php: ^8.1
- filament/filament: ^3.2
- illuminate/contracts: ^10.0||^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
README
A Filament plugin that allows you to easily obfuscate sensitive data in table columns, protecting personally identifiable information (PII) and other confidential data in your Filament admin panels.
Features
- Mask sensitive data in Filament table columns (emails, phone numbers, addresses, etc.)
- Customizable obfuscation patterns (show first/last X characters, use custom characters)
- Toggle visibility with click/hover actions
- Simple integration with existing Filament tables
Planned Features
- Role-based permissions for viewing unobfuscated data
Example
use RandomParanoia\FilamentColumnObfuscation\Columns\ObfuscatedColumn; // In your Filament resource or table public static function table(Table $table): Table { return $table ->columns([ // Basic usage - masks most characters ObfuscatedColumn::make('email') ->label('Email Address'), // Advanced usage with customization ObfuscatedColumn::make('phone_number') ->obfucastionPattern('phone') ->label('Phone Number') ->showFirstChars(3) ->showLastChars(2) ->obfuscationCharacter('*') ->revealOnClick(), ]); }
Installation
You can install the package via composer:
composer require randomparanoia/filament-column-obfuscation
Usage
Basic Usage
use RandomParanoia\FilamentColumnObfuscation\Columns\ObfuscatedColumn; ObfuscatedColumn::make('email') ->label('Email Address');
Preset Obfuscation Patterns
use RandomParanoia\FilamentColumnObfuscation\Columns\ObfuscatedColumn; ObfuscatedColumn::make('email') ->obfuscationPattern('email') ->label('Email Address');
default
(default): Obfuscate all charactersname
: Show first letter and last letter of the namephone
: Show first 3 digits, last 3 digits, and all digits in betweenemail
: Show first 2 letters, last 2 letters, and all letters in betweenaddress
: Show first 5 letters and last 5 letterslocality
: Show first 2 letters and last 2 letters
Customizing Obfuscation
ObfuscatedColumn::make('credit_card') ->showFirstChars(4) // Show first 4 characters ->showLastChars(4) // Show last 4 characters ->obfuscationCharacter('-') // Use custom character ->revealOnClick() // Allow revealing on click ->revealOnHover() // OR allow revealing on hover
Available Methods
showFirstChars(int $count)
: Show the first X charactersshowLastChars(int $count)
: Show the last X charactersobfuscationCharacter(string $char)
: Set the obfuscation characterrevealOnClick(bool $revealable = true)
: Enable click-to-reveal functionalityrevealOnHover(bool $revealable = true)
: Enable hover-to-reveal functionality
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.