yokles / cakephp-audit-log
一个简单的计时器。
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ^4.7
This package is not auto-updated.
Last update: 2024-09-14 19:36:39 UTC
README
CakePHP的日志插件。包含的AuditableBehavior为附加到每个模型实例创建审计历史。
行为在两个层面上跟踪更改。在更改完成后,它会对完全填充的对象进行快照,并在更新操作的情况下记录每个单独的更改。
功能
- 支持CakePHP 3.0。感谢@rochamarcelo
- 允许将每个修订记录附加到更改的责任来源——通常是用户。
- 允许开发者忽略指定属性的更改。默认情况下,
created、updated和modified属性会被忽略,但这些值可以被覆盖。 - 处理HABTM关联的更改。
- 不要求或依赖显式模型修订(
AuditLogs)和差异(AuditLogDeltas)的存在。
安装
Composer
$ composer install jippi/cakephp-audit-log
手动
- 点击项目描述旁边的“下载”按钮。
- 将存档解压到
src/plugins/AuditLog。
启用插件
在应用程序的bootstrap.php(即src/config/bootstrap.php)中添加以下行Plugin::load('AuditLog')
迁移
在您可以使用该插件之前,您需要存储修订(AuditLogs)和差异(AuditLogDeltas)的表。要创建表,您可以使用CakePHP 3.0迁移shell。下面是如何操作的
- 将迁移从
/path/to/plugin/config/Migrations复制到您的src/config/Migrations/目录
如果您通过composer安装,请查看
vendor/jippi/cakephp-audit-log/config/Migrations,如果您手动安装了插件,则应在plugins/AuditLog/config/Migrations下查找
- 使用以下命令运行迁移
$ bin/cake migrations migrate
确保您有权在数据库中创建表,否则这可能不会正常工作 ;)
使用
将AuditableBehavior应用于模型基本上与将任何其他CakePHP行为应用于模型相同。
基本用法
# Simple syntax accepting default options
class TasksTable extends Table {
public function initialize(array $config)
{
$this->addBehavior('AuditLog.Auditable');
}
}
配置
行为提供了一些配置选项
- `id`
- 如果您的Table类不遵循CakePHP约定,则模型主键属性的名称
- `ignore`
- 要忽略的属性名称数组,在记录创建在差异表中时。
- `habtm`
- 具有与操作模型HABTM关系并应与模型一起监控其更改的模型数组。如果HABTM模型本身是可审计的,则不要将其包括在此处。此选项用于仅相对于操作模型跟踪更改的相关模型。
# Syntax with explicit options
class TasksTable extends Table {
public function initialize(array $config)
{
$this->addBehavior('AuditLog.Auditable', [
'id' => 'task_id',
'ignore' => ['active', 'name', 'updated'],
'habtm' => ['Type', 'Project']
]);
}
}
设置审计来源
AuditableBehavior 可选地允许每个更改集由一个“源”所“拥有”——通常是负责更改的用户。由于用户和认证模型差异很大,该行为支持一个回调方法,该方法应返回要存储为更改源的值(如果有的话)。
currentUser() 方法必须对所有希望跟踪更改源的表都可用。
插件中包含一个实用特性,您可以在您的表上使用它来从当前请求中获取当前用户。您可以使用它如下
use AuditLog\Model\Table\CurrentUserTrait;
class TasksTable extends Table {
use CurrentUserTrait;
public function initialize(array $config)
{
$this->addBehavior('AuditLog.Auditable');
}
}
然后,您的表将附加一个 currentUser() 函数,该函数返回一个数组,其值填充如下
[
'id' => Auth::User('username'),
'description' => Auth::User('username'),
'url' => Request::here, // using the current request
'ip' => env('REMOTE_ADDR'),
]
限制
- 该项目是为 CakePHP 3.0 设计的,并且与 CakePHP <= 2.x 不兼容。如果您需要与这些版本兼容,请使用原始的 CakePHP 2.x AuditLog 插件
许可
此代码受 MIT 许可证 的许可。
注释
请随意提交错误报告或提出改进建议,或者通过分叉此项目并自行改进。欢迎贡献。