soliantconsulting/entity-audit

此包已 弃用 并不再维护。没有建议的替代包。

Doctrine 2 实体审计

1.0.1 2014-11-24 08:40 UTC

This package is not auto-updated.

Last update: 2022-04-30 02:00:13 UTC


README

Build Status

Doctrine 2 的审计模块。需要 ZfcUser 将修订映射到用户。此模块创建一个实体来审计指定的目标实体,并跟踪对该目标实体的修订。

关于

此模块接受要审计的实体配置,并创建实体来审计它们以及修订跟踪实体。包括一个视图层来浏览审计记录。支持将路由回实时应用程序数据,视图助手允许您从给定的审计实体找到并浏览最新的审计记录。

修订将所有要审计的实体汇总到修订桶中。每个桶包含事务中每个审计记录的修订实体。

审计在一个自己的事务中完成,在执行了刷新之后。审计需要一个事务中的两次刷新来完成。

安装

使用 composer 需要 SoliantEntityAudit

php composer.phar require "soliantconsulting/entity-audit": "dev-master"

config/application.config.php 中启用 SoliantEntityAudit

return array(
    'modules' => array(
        'SoliantEntityAudit'
        ...
    ),

config/SoliantEntityAudit.global.php.dist 复制到 config/autoload/SoliantEntityAudit.global.php 并编辑设置

return array(
    'audit' => array(
        'datetimeFormat' => 'r',
        'paginatorLimit' => 20,
        
        'tableNamePrefix' => '',
        'tableNameSuffix' => '_audit',
        'revisionTableName' => 'Revision',
        'revisionEntityTableName' => 'RevisionEntity',
        
        'entities' => array(           
            'Db\Entity\Song' => array(),
            'Db\Entity\Performer' => array(),
        ),
    ),
);

使用 Doctrine 命令行工具更新数据库并创建审计表

vendor/bin/doctrine-module orm:schema-tool:update

术语

AuditEntity - 一个生成的实体,它映射到目标可审计实体。此存储在创建修订时目标实体的值。

Revision - 一个实体,它存储了单个实体管理器刷新的时间戳、注释和用户,该刷新包含可审计的实体。

RevisionEntity - 一个映射实体,它将 AuditEntity 映射到 Revision 并映射到目标可审计实体。此实体可以重新激活目标实体和 AuditEntity。此实体还存储了在目标被审计时的修订类型。INS、UPD 和 DEL 分别映射到插入、更新和删除。目标的主键存储为一个数组,可以用来重新激活目标。

目标实体 - 在审计配置中指定为字符串的可审计实体。

身份验证

您可以为映射修订到用户而配置自定义实体作为用户实体。您也可以配置自定义身份验证服务。默认情况下,这些映射到 ZfcUserDoctrineORM\Entity\User 和 zfcuser_auth_service。例如,要使用自定义实体和服务 Db\Entity\User 对于实体和 Zend\Authentication\AuthenticationService 将有效。

用户实体必须实现 getDisplayName、getId 和 getEmail。身份验证服务必须实现 hasIdentity 和 getIdentity,它返回当前用户实体的实例。

不使用接口,因此 ZfcUser 可以直接使用。

路由

要将路由映射到可审计实体,请在审计 => 实体配置中包含路由信息。

    'Db\Entity\Song' => array(
        'route' => 'default',
        'defaults' => array(
            'controller' => 'song',
            'action' => 'detail',
        ),
    ),

从被审计实体中提取标识列的值,将这些值添加到默认值中,通过路由生成URL。

    <?php
        $options = $this->auditEntityOptions($revisionEntity->getTargetEntityClass());
        $routeOptions = array_merge($options['defaults'], $revisionEntity->getEntityKeys());
    ?>
    <a class="btn btn-info" href="<?=
        $this->url($options['route'], $routeOptions);
    ?>">Data</a>

这是如何将您的应用程序映射到当前修订实体。

    <a class="btn btn-info" href="<?=
        $this->url('audit/revision-entity',
            array(
                'revisionEntityId' => $this->auditCurrentRevisionEntity($auditedEntity)->getId()
            )
        );
    ?>">
        <i class="icon-list"></i>
    </a>

视图辅助器

返回审计服务。这是一个辅助类。该类也可以通过依赖注入工厂auditService访问。该类提供以下功能

  1. setComment(); 设置下一个审计事务的注释。当设置注释时,它将在创建审计修订时读取并添加为注释。

  2. getAuditEntityValues($auditEntity); 返回给定审计实体的所有字段及其值。不包括多对多关系。

  3. getEntityIdentifierValues($entity); 返回实体的所有标识键及其值。

  4. getRevisionEntities($entity) 返回给定审计实体或修订实体的所有修订实体。

$view->auditService();
```

Return the latest revision entity for the given entity.
```
$view->auditCurrentRevisionEntity($entity);
```

Return a paginator for all revisions of the specified class name.
```
$view->auditEntityPaginator($page, $entityClassName);
```

Return a paginator for all RevisionEntity entities for the given entity or 
a paginator attached to every RevisionEntity for the given audited entity class.Pass an entity or a class name string.
```
$view->auditRevisionEntityPaginator($page, $entity);
```

Return a paginator for all Revision entities.
```
$view->auditRevisionPaginator($page);
```

Returns the routing information for an entity by class name
```
$view->auditEntityOptions($entityClassName);
```

Titling
-------

If an entity has a __toString method it will be used to title an audit entity limited to 256 characters and stored in the RevisionEntity.


Inspired by SimpleThings