ensi / laravel-auditing
laravel 审计
Requires
- php: ^8.1
- laravel/framework: ^9.0 || ^10.0 || ^11.0
- ramsey/uuid: ^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- nunomaduro/collision: ^6.0 || ^7.0 || ^8.1
- orchestra/testbench: ^7.0 || ^8.0 || ^9.0
- pestphp/pest: ^1.22 || ^2.0
- pestphp/pest-plugin-laravel: ^1.1 || ^2.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.11
- spaze/phpstan-disallowed-calls: ^2.15
README
owen-it/laravel-auditing 的意见分歧分支 owen-it/laravel-auditing
安装
您可以通过 composer 安装此包
composer require ensi/laravel-auditing
使用以下命令发布迁移
php artisan vendor:publish --provider="Ensi\LaravelAuditing\LaravelAuditingServiceProvider"
从 0.2.x 迁移到 0.3.0
- 发布新的迁移
php artisan vendor:publish --provider="Ensi\LaravelAuditing\LaravelAuditingServiceProvider" --tag=migrations-0.3
- 如果已发布配置
laravel-auditing.php
,则将resolver.user
的值替换为Ensi\LaravelAuditing\Resolvers\UserResolver::class
版本兼容性
基本用法
默认情况下,不会为模型保存修改历史。要为特定模型启用日志记录,您需要向其中添加 Support s Audit
特性和 Auditable
接口
use Ensi\LaravelAuditing\Contracts\Auditable; use Ensi\LaravelAuditing\SupportsAudit; class Something extends Model implements Auditable { use SupportsAudit; }
如果我们从逻辑上更改子模型的数据,并希望在父模型的历史记录中执行此更改,则必须在更改数据之前在事务中设置根实体(即模型)。这是通过 Transaction
门面或管理器 \\Ensi\\LaravelAuditing\\Transactions\\ExtendedTransactionManager
来完成的
DB::transaction(function () { Transaction::setRootEntity($rootModel); $relatedModel->save(); });
要添加有关更改者(特定用户或,例如,控制台命令)的数据到历史记录中,同样,您需要在更改数据之前这样做,但通过 Subject
门面或注入 \\Ensi\\LaravelAuditing\\Resolvers\\SubjectManager
Subject::attach($subject); // $subject - объект реализующий Ensi\LaravelAuditing\Contracts
事务完成后,主题不会被解绑。可以通过调用 Subject::detach()
方法手动解绑。
在处理 HTTP 请求时,您可以在中间件中设置主题。在控制台命令和处理程序中,事件队列在执行期间重新分配。
主题可以是支持 \Ensi\LaravelAuditing\Contracts\Principal
接口的任何实体。如果主题是持续的任务,例如从文件导入,则可以在 getUserIdentifier()
方法中返回创建任务的用户的 ID,并将导入的文件名作为名称返回。
在用户模型中,getAuthIdentifier()
和 getUserIdentifier()
方法返回相同的标识符。
此外,与原始包不同,不仅保存了更改的字段的历史记录,还保存了更改时的模型对象的完整状态。
贡献
有关详细信息,请参阅 CONTRIBUTING
测试
- composer install
- composer test
安全漏洞
请查看我们关于如何报告安全漏洞的安全策略 我们的安全策略
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 获取更多信息。