swisnl / carwash
Data scrubber for Laravel applications
Requires
- laravel/framework: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- fakerphp/faker: ^1.9.1
- orchestra/testbench: ^4.0|^5.0|^6.0|^7.0|^8.0
- phpunit/phpunit: ^8.5|^9.5
README
Carwash is a data scrubbing utility for Laravel applications
Installation
Install via composer
composer require swisnl/carwash
Usage
1. Publish default config file
php artisan vendor:publish
2. Edit config file at config/carwash.php
for your application
<?php return [ 'users' => [ 'first_name' => 'firstName', 'last_name' => 'lastName', 'email' => 'safeEmail' ], 'addresses' => [ 'street' => 'streetAddress', 'city' => 'city', 'zip' => 'postcode' ], 'bios' => [ 'content' => 'sentences:2' ] ];
Carwash uses the fabulous Faker package under the hood to generate replacement data. Please refer to the Faker documentation for a complete list of available formatters.
More generally, the format of the Carwash config file is:
<?php return [ '[TABLE_NAME]' => [ '[COLUMN_NAME]' => '[Faker Formatter][:argument1,argument2]' ] ];
3. Run Scrub Command
php artisan carwash:scrub
Other
Instead of passing a Faker Formatter as the value for each field in your Carwash config file, alternatively you can set the field value to a Callable that returns the new field value. This closure will receive an instance of Faker and the current value of the attribute being scrubbed.
<?php return [ 'users' => [ 'name' => function ($faker, $currentValue) { return "{$faker->firstName} {$faker->lastName}"; }, 'bio' => BioFormatter::class ] ]; class BioFormatter { public function __invoke($faker) { return $faker->sentences(42); } }
Callables can also replace entire table configurations allowing full control over what data is scrubbed and how.
<?php return [ 'users' => function ($faker, $user) { $firstName = $faker->firstName; $lastName = $faker->lastName; return [ 'first_name' => $firstName, 'last_name' => $lastName, 'email' => $firstName . "." . $lastName. "@" . $faker->safeEmailDomain, 'phone' => substr($user['phone'], 0, 3) . "-555-" . $faker->randomNumber(4) ]; }, ];
Testing
$ composer test
Security
If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.
Credits
This package is a fork of dansoppelsa/carwash with updated Laravel support.
License
The MIT License (MIT). Please see License File for more information.