odilov-sh / laravel-audit-tm
Laravel 审计包
dev-main
2023-12-14 09:33 UTC
Requires
- seshpulatov/auth-tm: dev-main
This package is auto-updated.
Last update: 2024-09-14 11:01:08 UTC
README
关于
此包提供了一种简单的方法来审计您的 Eloquent 模型。包收集以下信息
service_id
- 使用此包的服务的 IDuser_id
- 执行操作的用户event
- 执行的事件auditable_type
- 可审计模型的类名。默认为模型类名。您可以在您的模型中覆盖getAuditableClassName()
。auditable_id
- 可审计模型的 ID。您可以在您的模型中覆盖getAuditableId()
。old_values
- 可审计模型的老旧值new_values
- 可审计模型的新值tags
- 额外的标签。您可以在您的模型中覆盖getAuditableTags()
。url
- 请求的 URLip_address
- 请求的 IP 地址user_agent
- 请求的用户代理
如果您使用 Astrotomic\Translatable\Translatable
特性,此包还会收集可审计模型的翻译,如 name_uz
、title_uz
等。
安装
composer require odilov-sh/laravel-audit-tm
发布
php artisan vendor:publish --provider="OdilovSh\LaravelAuditTm\AuditTmServiceProvider"
环境变量
您的 .env 文件必须包含以下变量
AUTH_SERVICE_ID=1111 AUDIT_TM_SECRET_KEY="your secret key" AUDIT_TM_ENABLED=true // if false, audit will not be sent AUDIT_TM_BASE_URL="audit receiver base url"
用法
use Illuminate\Database\Eloquent\Model; class Post extends Model { use OdilovSh\LaravelAuditTm\Traits\Auditable; }
可审计特性会在 updated
、created
和 deleted
事件上自动将数据发送到审计服务器。在其他情况下,您必须手动发送数据。手动发送数据可能如下所示
// Manually send data to audit server use OdilovSh\LaravelAuditTm\AuditSender; $data = []; $data['event'] = 'changeStatus'; // Event name $data['auditable_type'] = 'App\Models\Product'; // The name of the class being audited $data['auditable_id'] = 123; // The id of the model being audited // Old values before changing $data['old_values'] = [ 'status' => 'active' ]; // New values after changing $data['new_values'] = [ 'status' => 'inactive' ]; (new AuditSender($data))->send();
队列
您可以使用队列作业将审计数据发送到审计服务器。在这种情况下,您将不会等待发送到审计服务器的请求并获取响应。所有过程都将后台完成。要使用队列,首先必须配置 Laravel 的队列设置。然后,您只需在 env 文件中添加新的配置即可
AUDIT_TM_QUEUE_IS_ENABLED=true AUDIT_TM_ON_QUEUE=default
注意
此包使用 OdilovSh\LaravelAuditTm\Resolvers\UserIdResolver
解析用户 ID。您可以通过更改 audit-tm
配置文件中的 user_id_resolver
来更改解析器。此外,您还可以将此配置设置为 false
。在这种情况下,user_id
值将不会发送。