ensi/laravel-auditing

0.4.0 2024-06-26 10:13 UTC

This package is auto-updated.

Last update: 2024-08-27 08:44:25 UTC


README

Latest Version on Packagist Tests Total Downloads

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

  1. 发布新的迁移 php artisan vendor:publish --provider="Ensi\LaravelAuditing\LaravelAuditingServiceProvider" --tag=migrations-0.3
  2. 如果已发布配置 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

测试

  1. composer install
  2. composer test

安全漏洞

请查看我们关于如何报告安全漏洞的安全策略 我们的安全策略

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 获取更多信息。