imsamurai/audit-log

CakePHP 审计插件

1.1.42 2015-02-06 15:17 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:19:52 UTC


README

查看 审计日志 API 文档

摘要

Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License

CakePHP 提供的日志插件。包含的 AuditableBehavior 会为每个附加的模型实例创建一个审计历史。

行为在两个级别上跟踪更改。在更改完成后,它会捕获完全填充的对象快照,并在更新操作的情况下记录每个单独的更改。

特性

  • 支持 CakePHP 2.0。感谢 @jasonsnider。
  • 跟踪对象快照以及单个属性更改。
  • 允许每个修订记录附加到负责更改的来源(通常是用户)。
  • 允许开发人员忽略指定属性的更改。默认情况下,名为 createdupdatedmodified 的属性会被忽略,但可以重写这些值。
  • 处理 HABTM 关联的更改。
  • 完全兼容 PolymorphicBehavior
  • 不需要或依赖于显式模型修订(AuditLog)和增量(AuditLogDeltas)的存在。

安装

CakePHP >= 2.0

作为存档

  1. 下载并解压缩源文件到 app/Plugin/AuditLog

作为子模块

  1. $ git submodule add git://github.com/imsamurai/CakePHP-Audit-Log-Plugin.git <path_to>/app/Plugin/AuditLog
  2. $ git submodule init
  3. $ git submodule update

通过 composer

  1. 在您的 composer "require" 中添加: { "imsamurai/audit-log": "1.1.*", }
  2. 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 文件中的说明(不再维护)。

下一步

  1. 在您的 CakePHP 应用程序数据库上运行 install.sql 文件或使用模式。这将创建存储每个对象相关更改历史的 auditsaudit_deltas 表。

  2. 将插件添加到 bootstrap.php

    CakePlugin::load('AuditLog', array('bootstrap' => true));
  3. 如果需要,创建一个 currentUser() 方法。

    AuditableBehavior 允许每个更改集由一个“来源”拥有,通常是负责更改的用户。由于用户和身份验证模型差异很大,该行为支持一个回调方法,该方法应返回要存储为更改源的值(如果有的话)。

    currentUser() 方法必须对每个希望跟踪更改来源的模型可用,因此我建议创建 CakePHP 的 app_model.php 文件的副本并将方法添加到其中。保持 DRY,对吧?

    行为期望 currentUser() 方法返回一个包含 id 键的关联数组。从上面的示例继续,以下代码可能出现在 AppModel

    public function currentUser() {
      return AuthComponent::user();
    }
  4. 将行为附加到任何所需的模型并配置。

用法

AuditableBehavior

AuditableBehavior 应用到模型基本上与将任何其他 CakePHP 行为应用一样。行为确实提供了一些配置选项

`ignore`
在创建deltas表中的记录时要忽略的属性名数组。
`habtm`
与操作模型具有HABTM关系并应与模型一起监视其更改的模型数组。如果HABTM模型本身是可审计的,则不要将其包含在此处。此选项用于仅相对于操作模型跟踪更改的相关模型。

AuditHelper

  • user(user) 渲染用户名并带有指向用户配置文件的链接(请参阅配置 AuditLog.User
  • listBlock(conditions, ajax) 根据条件 conditionsajax 渲染具有紧凑审计日志表的控件。第二个参数表示控件将通过ajax或请求操作(默认为ajax)加载。此方法简单地调用操作 AuditController::index 并传递 list=1conditions(如果设置了,还将传递 count=<count>)。

AuditController

对于按日期筛选,您可以使用DateTime构造函数可以理解的所有格式(单个或范围)。例如

  • 2014/11/05 TO 2014/11/06 - 范围为从05.11.2014 00:00:00到06.11.2014 00:00:00
  • 2014/11/05 01:02:20 TO 2014/11/06 15:02:21 - 从05.11.2014 01:02:20到06.11.2014 15:02:21
  • 05.11.2014 01:02:20 to 06.11.2014 15:02:21 - 从05.11.2014 01:02:20到06.11.2014 15:02:21
  • 2014/11/05 - 从05.11.2014 00:00:00到05.11.2014 23:59:59
  • 2014/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中看到的一些其他参数