clntdev / scrubber-laravel
一个用于从数据库中定义字段中清除数据的Laravel包
Requires
- php: >=8.0.2
- clntdev/scrubber: ^1.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- clntdev/coding-standards: ^1.0
- mockery/mockery: ^1.0
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.5
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7
- symfony/var-dumper: ^6.0|^7.0
- timacdonald/log-fake: ^2.0
This package is auto-updated.
Last update: 2024-09-13 21:22:45 UTC
README
Scrubber(Laravel包装器)是一个简单的Laravel包装器,它围绕名为Scrubber的简单PHP包添加了一个Facade和一些有用的Artisan命令,这允许你定义一个PHP配置文件,这可以帮助使用预定义的或随机值更新数据库字段。
当您需要一份用于工作的生产数据库副本并需要擦除敏感内容时,这非常理想。
安装
通过运行以下命令通过composer安装: composer require clntdev/scrubber-laravel
通过运行以下命令将包配置发布到config/scrubber.php
: php artisan vendor:publish --tag=scrubber
使用方法
该包依赖于一个有效的PHP配置文件才能正确运行,该文件返回一个简单的数组,该数组映射了表、字段及其详细信息,这样它就知道要使用哪个处理器。
如果使用默认位置,在Laravel项目的根目录中创建一个scrubber.php
文件。如果使用其他位置,请在config/scrubber.php
文件中设置绝对路径。
- 如果需要使用不同的列来获取数据库记录,可以在字段上定义
primary_key
,默认为id
。 - 如果希望覆盖检测到的处理器,可以在字段上定义
handler
。 - 可以在字段上定义
type
,这可以用来定义字段为特定的数据类型,例如用于GDPR的pid
(这在下面列出的方法中很有用)。
以下是单元测试中使用的示例配置
<?php use ClntDev\Scrubber\Handlers\FakerHandler; return [ 'users' => [ 'first_name' => [ 'primary_key' => 'id', 'value' => 'faker.firstName', 'type' => 'pid', ], 'last_name' => [ 'value' => 'faker.lastName', 'type' => 'pid', ], 'email' => [ 'value' => 'faker.email', 'handler' => FakerHandler::class, 'type' => 'pid', ], 'toggle' => [ 'value' => static fn (): bool => true, ], ], ];
Facade
可以通过ClntDev\LaravelScrubber\Facades\Scrubber
类访问Scrubber包的方法。
此包装器使用DB
facade来执行任何数据库更新,并使用Illuminate\Log\Logger
来记录任何错误消息。这些绑定到基础包文档中详细说明的契约,文档可在此处找到。
方法
Scrubber::run()
- 这是主方法,将从解析的配置文件中运行所有处理器,以修改数据库。
Scrubber::getFieldList(string $type = 'pid')
- 此方法将返回给定类型的字段数组,默认为pid
。
Scrubber::getFieldListAsString(string $type = 'pid')
- 此方法将返回给定类型的逗号分隔字符串,默认为pid
。
命令
scrubber:run
- 此命令将在数据库上运行run()
scrubber方法。
scrubber:fields --type=pid
- 此命令将返回给定类型的逗号分隔字符串,如果没有指定type
参数,则默认为pid
。