讯泰 / audit
Croogo 审计插件
Requires
- php: >=5.3.0
- croogo/croogo: ~2.2
This package is auto-updated.
Last update: 2024-09-20 16:21:45 UTC
README
为 CakePHP 提供日志插件。包含的 AuditableBehavior
为附加到模型实例的每个实例创建审计历史。
该行为在两个层面上跟踪更改。在更改完成后,它会拍摄一个完全填充的对象的快照,并在更新操作的情况下记录每个单独的更改。
功能
- 支持 CakePHP 2.0。感谢,@jasonsnider。
- 跟踪对象快照以及单个属性更改。
- 允许将每个修订记录附加到变更的责任方(通常是用户)。
- 允许开发者忽略指定属性的更改。默认情况下,忽略名为
created
、updated
和modified
的属性,但这些值可以被覆盖。 - 处理 HABTM 关联的更改。
- 完全兼容
PolymorphicBehavior
。 - 不要求或依赖于显式模型修订(
AuditLog
)和增量(AuditLogDeltas
)的存在。
安装
CakePHP >= 2.0
作为存档
- 点击项目描述旁边的“下载”大按钮。
- 将存档解压到
app/Plugin/AuditLog
。
作为子模块
$ git submodule add git://github.com/robwilkerson/CakePHP-Audit-Log-Plugin.git <path_to>/app/Plugin/AuditLog
$ git submodule init
$ git submodule update
要创建表,可以使用模式外壳。要创建表,请执行以下操作
cd <path_to>/app/
chmod +x ./Console/cake
./Console/cake schema create --plugin AuditLog --name AuditLog
CakePHP 1.3.x
对于与 CakePHP 1.3.x 一起使用,请确保使用 1.3
分支的代码并遵循该 README 文件中的说明。
下一步
-
在你的 CakePHP 应用程序数据库上运行
install.sql
文件。这将创建存储每个对象的关联更改历史的audits
和audit_deltas
表。 -
如有必要,创建一个
currentUser()
方法。可选的
AuditableBehavior
允许每个更改集由一个“来源”拥有——通常是负责更改的用户。由于用户和认证模型差异很大,该行为支持一个回调方法,该方法应返回要存储为更改来源的值(如果有的话)。currentUser()
方法必须对任何希望跟踪更改来源的模型可用,因此我建议创建 CakePHP 的app_model.php
文件的副本并在其中添加该方法。不要重复代码,对吧?如果正在使用核心
Auth
组件,则存储更改集来源可能有点棘手,因为用户数据在行为所在的模型层并不容易获得。一种选择是从控制器中传递这些数据。一种方法是包括以下代码在AppController::beforeFilter()
if( !empty( $this->data ) && empty( $this->data[$this->Auth->userModel] ) ) { $this->data[$this->Auth->userModel] = $this->currentUser(); }
该行为期望
currentUser()
方法返回一个具有id
键的关联数组。从上面的示例继续,以下代码可能出现在AppModel
protected function currentUser() { $user = $this->Auth->user(); return $user[$this->Auth->userModel]; # Return the complete user array }
-
将行为附加到任何所需的模型并配置。
用法
将 AuditableBehavior
应用到模型基本上与将任何其他 CakePHP 行为应用到模型相同。行为确实提供了一些配置选项
- `ignore`
- 一个属性名称数组,当在增量表中创建记录时要忽略。
- `habtm`
- 与作用模型具有HABTM关系的模型数组,其变化应与模型一起监控。如果HABTM模型本身是可审计的,则不要将其包含在此处。此选项用于仅相对于作用模型跟踪变化的关联模型。
语法
# Simple syntax accepting default options
class Task extends AppModel {
public $actsAs = array( 'AuditLog.Auditable' );
#
# Additional model code.
#
}
# Syntax with explicit options
class Task extends AppModel {
public $actsAs = array(
'AuditLog.Auditable' => array(
'ignore' => array( 'active', 'name', 'updated' ),
'habtm' => array( 'Type', 'Project' )
)
);
#
# Additional model code.
#
}
限制
- 主分支与CakePHP <=1.3.x版本不兼容。如果您需要与这些版本兼容,请从
1.3
分支安装代码,并按照该README中的说明操作。
许可证
此代码遵循MIT许可证。
注意
请随时通过工单提交错误报告或提出改进建议。也可以分叉此项目并自行改进。欢迎贡献。