luketowers / wn-easyaudit-plugin
查看和管理 Winter CMS 项目中模型审计日志
dev-main
2024-05-22 20:24 UTC
This package is auto-updated.
Last update: 2024-09-22 20:56:24 UTC
README
轻松查看和管理 Winter CMS 项目中模型的审计日志。
安装
要从 Composer 安装,请在项目根目录下运行 composer require luketowers/wn-easyaudit-plugin
。
文档
要开始使用此插件,只需将 TrackableModel
行为添加到您希望跟踪的任何模型中
class MyModel extends Model { /** * @var array Behaviors implemented by this model class */ public $implement = ['@LukeTowers.EasyAudit.Behaviors.TrackableModel']; }
一旦将 TrackableModel
行为添加到模型中,任何在 $trackableEvents
中设置的本地事件都会自动监听,并为每个事件生成一个审计记录。
默认情况下,TrackableModel
行为将监听以下事件
model.afterCreate
model.afterUpdate
model.afterDelete
除了上述属性外,您还可以向模型类添加以下属性以配置审计日志行为
class MyModel extends Model { // ... /** * @var array The model events that are to be tracked as activities */ public $trackableEvents = [ 'model.afterCreate' => ['name' => 'created', 'description' => 'The record was created'], 'model.afterUpdate' => ['name' => 'updated', 'description' => 'The record was updated'], 'model.afterDelete' => ['name' => 'archived', 'description' => 'The record was archived'], ]; /** * @var bool Manually control the IP address logging on this model (default from the luketowers.easyaudit.logIpAddress config setting) */ public $trackableLogIpAddress = true; /** * @var bool Manually control the User agent logging on this model (default from the luketowers.easyaudit.logUserAgent config setting) */ public $trackableLogUserAgent = true; /** * @var bool Manually control the change tracking on this model (default from the luketowers.easyaudit.trackChanges config setting) */ public $trackableTrackChanges = true; /** * @var bool Manually control if the activities field gets automatically injected into backend forms * for this model (default from the luketowers.easyaudit.autoInjectActvitiesFormWidget config setting) */ public $trackableInjectActvitiesFormWidget = true; }
您可以通过添加针对 activities
关系的字段(由 TrackableModel
行为添加)并将类型设置为 activitylog
来查看模型审计日志,并将其添加到相关的 fields.yaml
文件中
activities: tab: Audit Log context: [update, preview] type: activitylog span: full
高级使用
还可以使用 LukeTowers\EasyAudit\Classes\ActivityLogger
类直接记录事件
使用方法:创建此类的新实例,然后根据需要链式调用数据的方法或直接调用 log()
方法。示例(全部在一个中)
$activity = new ActivityLogger(); $activity->log('updated', 'MyModel updated', $myModel, BackendAuth::getUser(), ['maintenanceMode' => true], 'MyVendor.MyPlugin');
或(链式调用)
$activity = new ActivityLogger(); $activity->inLog('MyVendor.MyPlugin') ->for($myModel) ->by(BackendAuth::getUser()) ->description('MyModel updated') ->properties(['maintenanceMode' => true]) ->log('updated');
此外,通过 activity()
方法,ActivityLogger() 类在实现 LukeTowers.EasyAudit.Behaviors.TrackableModel
行为的模型上也是可用的。这使您能够做到以下
class Asset extends Model { // ... public function updateInventory() { // ... $this->activity('updated_inventory')->description("The asset's inventory was updated")->log(); } }