luketowers / oc-easyaudit-plugin
该软件包已被废弃,不再维护。作者建议使用https://github.com/LukeTowers/wn-easyaudit-plugin软件包。
查看和管理 Winter CMS 项目中模型的安全日志
dev-main
2024-05-22 20:24 UTC
This package is auto-updated.
Last update: 2024-05-22 20:24:20 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');
此外,ActivityLogger
类还可在实现 LukeTowers.EasyAudit.Behaviors.TrackableModel
行为的模型上通过 activity()
方法使用。这使您可以做到以下事情
class Asset extends Model { // ... public function updateInventory() { // ... $this->activity('updated_inventory')->description("The asset's inventory was updated")->log(); } }