romanzipp / laravel-previously-deleted
存储已删除的模型属性
1.6.0
2024-03-19 08:31 UTC
Requires
- php: ^8.0
- illuminate/database: ^5.4|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^5.4|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.3.2
- orchestra/testbench: >=3.8
- phpstan/phpstan: ^0.12.99|^1.0
- phpunit/phpunit: ^8.0|^9.0
- romanzipp/php-cs-fixer-config: ^3.0
README
此包在删除模型之前存储所选属性。
为什么?
如果用户请求删除其用户数据,您需要部分删除与用户相关的所有数据(GDPR)。使用此包,您可以存储某些属性和值,例如阻止以前注册的用户名或电子邮件地址。
安装
composer require romanzipp/laravel-previously-deleted
如果您使用 Laravel 5.5+,则已完成,否则继续
romanzipp\PreviouslyDeleted\Providers\PreviouslyDeletedProvider::class,
将服务提供者添加到您的 app.php 配置文件
配置
将配置复制到配置文件夹
$ php artisan vendor:publish --provider="romanzipp\PreviouslyDeleted\Providers\PreviouslyDeletedProvider"
运行迁移
$ php artisan migrate
用法
此示例展示了与用户模型和存储的 "username" 和 "email" 属性一起使用的情况。
添加模型特质
use romanzipp\PreviouslyDeleted\Traits\SavePreviouslyDeleted; class User extends Model { use SavePreviouslyDeleted; protected $storeDeleted = [ 'username', 'email', ]; }
添加验证规则
验证规则需要两个参数: not_deleted:{table}[,{attribute}]
table
:查询的表名。在此示例中:users
。attribute
:模型属性。如果没有给出,则使用输入名称。
public function store(Request $request) { $request->validate([ 'name' => ['required', 'not_deleted:users,username'], 'email' => ['required', 'not_deleted:users'], 'password' => ['required', 'min:6'] ]); User::create([ 'username' => $request->input('name'), 'email' => $request->input('email'), 'password' => bcrypt($request->input('password')), ]); }
您也可以使用规则实例
use romanzipp\PreviouslyDeleted\Rules\NotPreviouslyDeleted; $request->validate([ 'name' => ['required', new NotPreviouslyDeleted(User::class, 'username')], 'email' => ['required', new NotPreviouslyDeleted(User::class)], 'password' => ['required', 'min:6'] ]);
扩展用法
存储哈希值
当存储个人信息时,您应该创建哈希值以尊重用户的隐私。
存储纯文本值
protected $storeDeleted = [ 'username', 'email', ];
根据 GDPR (DSGVO),用户有权请求删除所有个人信息的完整删除,包括电子邮件地址、用户名等。如果受此影响,您应该使用哈希算法来防止任何隐私损害。
存储哈希值
protected $storeDeleted = [ 'username' => 'sha1', 'email' => 'md5', ];
存储软删除
默认情况下,该包仅在模型被强制删除时存储属性。
要启用即使在软删除中存储属性,请将 ignore_soft_deleted
配置值设置为 false
。
return [ 'ignore_soft_deleted' => false, ];
测试
./vendor/bin/phpunit