imsamurai / audit-log
CakePHP 审计插件
Requires
- php: >=5.3.0
- composer/installers: *
This package is not auto-updated.
Last update: 2024-09-24 02:19:52 UTC
README
查看 审计日志 API 文档
摘要
为 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/imsamurai/CakePHP-Audit-Log-Plugin.git <path_to>/app/Plugin/AuditLog
$ git submodule init
$ git submodule update
通过 composer
- 在您的 composer "require" 中添加: { "imsamurai/audit-log": "1.1.*", }
composer update
要创建表,您可以使用模式外壳。要创建表,请执行
cd <path_to>/app/
chmod +x ./Console/cake
./Console/cake schema create -p AuditLog
CakePHP 1.3.x
对于与 CakePHP 1.3.x 一起使用,请确保使用 1.3
分支的代码并遵循该 README 文件中的说明(不再维护)。
下一步
-
在您的 CakePHP 应用程序数据库上运行
install.sql
文件或使用模式。这将创建存储每个对象相关更改历史的audits
和audit_deltas
表。 -
将插件添加到
bootstrap.php
CakePlugin::load('AuditLog', array('bootstrap' => true));
-
如果需要,创建一个
currentUser()
方法。AuditableBehavior
允许每个更改集由一个“来源”拥有,通常是负责更改的用户。由于用户和身份验证模型差异很大,该行为支持一个回调方法,该方法应返回要存储为更改源的值(如果有的话)。currentUser()
方法必须对每个希望跟踪更改来源的模型可用,因此我建议创建 CakePHP 的app_model.php
文件的副本并将方法添加到其中。保持 DRY,对吧?行为期望
currentUser()
方法返回一个包含id
键的关联数组。从上面的示例继续,以下代码可能出现在AppModel
中public function currentUser() { return AuthComponent::user(); }
-
将行为附加到任何所需的模型并配置。
用法
AuditableBehavior
将 AuditableBehavior
应用到模型基本上与将任何其他 CakePHP 行为应用一样。行为确实提供了一些配置选项
- `ignore`
- 在创建deltas表中的记录时要忽略的属性名数组。
- `habtm`
- 与操作模型具有HABTM关系并应与模型一起监视其更改的模型数组。如果HABTM模型本身是可审计的,则不要将其包含在此处。此选项用于仅相对于操作模型跟踪更改的相关模型。
AuditHelper
user(user)
渲染用户名并带有指向用户配置文件的链接(请参阅配置AuditLog.User
)listBlock(conditions, ajax)
根据条件conditions
和ajax
渲染具有紧凑审计日志表的控件。第二个参数表示控件将通过ajax或请求操作(默认为ajax)加载。此方法简单地调用操作AuditController::index
并传递list=1
和conditions
(如果设置了,还将传递count=<count>
)。
AuditController
对于按日期筛选,您可以使用DateTime构造函数可以理解的所有格式(单个或范围)。例如
2014/11/05 TO 2014/11/06
- 范围为从05.11.2014 00:00:00到06.11.2014 00:00:002014/11/05 01:02:20 TO 2014/11/06 15:02:21
- 从05.11.2014 01:02:20到06.11.2014 15:02:2105.11.2014 01:02:20 to 06.11.2014 15:02:21
- 从05.11.2014 01:02:20到06.11.2014 15:02:212014/11/05
- 从05.11.2014 00:00:00到05.11.2014 23:59:592014/11/05 03:40:21
- 日期必须等于05.11.2014 03:40:21
提示:您可以使用 bootstrap daterange picker 来选择此字段。
语法
# 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许可证授权。
注意
请随时通过票据或分叉此项目并提出改进建议。欢迎贡献。
变更日志
1.1.1
- 在控件中添加
view all
链接
1.1.0
- 添加到composer和travis。
- 将数据库中的source_id字段更改为user_id字段。
- 处理在字段中保存AuditDelta时为数组值的情况(模型的实际保存由https://github.com/imsamurai/cakephp-serializable-behaviour提供)
- 具有分页和筛选功能的审计记录列表的默认视图(对于更好的样式需要bootstrap 2)
- 具体审计记录及其deltas的默认视图
- 具有用于显示审计记录简短列表和格式化用户电子邮件(带有指向应用程序中用户视图的链接)的ajax/requestAction控件的辅助程序
- 您可以在插件bootstrap.php中看到的一些其他参数