Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
CakePHP plugin for loggin operations in systems
PHP
branch: master

Update afterSave signature

Include PHP 5.5 in travis
Update doclocks
latest commit af8b503152
@CauanCabral CauanCabral authored
Failed to load latest commit information.
Config Refatoração geral do behavior (CUIDADO)
Console/Command Update afterSave signature
Controller Update afterSave signature
Lib Update afterSave signature
Locale/pt_br/LC_MESSAGES
Model Update afterSave signature
Test Incluindo suite de testes
View Update afterSave signature
.travis.yml Update afterSave signature
LICENSE
README.textile Include composer support
composer.json Include composer support

README.textile

CakePHP Auditable Build Status

Este plugin inclui funções para tornar a auditoria de sistemas em CakePHP mais simples.
A ideia central é manter a informação de qual usuário fez o quê, e quando isso foi feito.

Como usar

O Plugin utiliza uma classe estática como “repositório” das configurações globais dele. Estas configurações ficam então acessíveis ao Behavior e Helper, garantindo funcionamento correto de ambos.

Classe AuditableConfig

É a classe que armazena as configurações do Plugin. Tem acesso estático aos seus quatro atributos, que são:

  • responsibleModel Uma string com o nome do Modelo que armazena os usuários do sistema;
  • responsibleId Um inteiro que representa o ID do usuário logado no sistema;
  • Logger A instância de um Modelo válido para salvar os logs;
  • serialize Uma string contendo o nome de uma função válida para serializar arrays;
  • unserialize Uma string contendo o nome de uma função válida para deserializar strings geradas pela função definida no atributo anterior.

No próximo item é sugerido uma forma de definir esses atributos para toda a aplicação.

Em todo lugar que precisar acessar esta classe (inclusive na hora de definir suas propriedades), faça a sua inclusão para garantir que esteja definida naquele escopo:

App::uses('AuditableConfig', 'Auditable.Lib');

Configuração mínima do Plugin

Existem duas configurações mínimas: a primeira é definir O Modelo que persistirá a mensagem
de log, a segunda é definir, logo que esteja disponível, a informação sobre o usuário logado.

Para a primeira, é preferível sobrecarregar o construtor do AppModel de maneira que a instância
do Modelo esteja pronta sempre que necessária. No seu AppModel faça algo como:

public function __construct($id = false, $table = null, $ds = null) {
	if(get_class($this) !== 'Logger' && empty(AuditableConfig::$Logger)) {
		// Caso deseje usar o modelo padrão, utilize como abaixo, caso contrário você pode usar qualquer modelo
		AuditableConfig::$Logger = ClassRegistry::init('Auditable.Logger', true);
	}

	parent::__construct($id, $table, $ds);
}

Para a informação do usuário logado, uma sugestão é usar o callback do AppController, deixando-o mais ou menos assim:

public function beforeFilter() {
	parent::beforeFilter();

	if($this->Auth->loggedIn()) {
		AuditableConfig::$responsibleId = $this->Auth->user('id');
	}
}

Em seguida você deve configurar em cada um dos modelos auditáveis o behavior Auditable, incluindo
ele em seu $actsAs da seguinte maneira

public $actsAs = array('Auditable.Auditable');

Behavior Auditable

É possível configurar alguns items do behavior, são eles:

  • auditSql : Opção para habilitar o log das queries geradas pelo CakePHP. O padrão é true.
  • skip : Lista (array) com nome dos campos que devem ser ignoradas no log.
  • fields : Aceita os dois índices abaixo
    • created : Nome do campo presente em cada modelo para armazenar quem criou o registro
    • modified : Nome do campo presente em cada modelo para armazenar quem alterou o registro

Helper Auditor

Suas configurações são:

  • formats : Um array com os diferentes formatos utilizados nos logs, conforme abaixo
    • general : Uma string que será usada como descrição do log. Aceita dois placeholders: ‘:action’ e ‘:data’ que representam respectivamente a ação (criação ou modificação) e o que foi efetivamente alterado.
    • prepend : Uma string que será prefixada em cada campo do log. Não aceita placeholders.
    • pospend : Uma string que será pósfixada em cada campo do log. Não aceita placeholders.
    • create : Uma string que será usado para logs de criação. Aceita os placeholders ‘:field’ e ‘:value’
    • modify : Um string que será usada para logs de modificação. Aceita os placeholders ‘:field’, ‘:old’ e ‘:new’
    • delete : Uma string que será usada para logs de remoção. Aceita os placeholders ‘:field’ e ‘:value’

Para usa-lo na view, basta invocar o método format

echo $this->Auditor->format($data['LogDetail']['difference'], $data['Logger']['type']);

Onde o primeiro parâmetro é a coluna ‘difference’ do modelo LogDetail e o segundo é o tipo de log (‘create’, ‘modify’, ‘delete’).

Autor e Copyright

  • Copyright 2011-2013, Radig – Soluções em TI
  • Licença MIT – Isto quer dizer que o código está disponível sem nenhuma garantia, ao mesmo tempo que
    você pode usa-lo de forma isolada ou em conjunto com seu próprio código.

Observações

  • Este behavior requer PHP versão >= 5.3
  • Compatível com CakePHP 2.x
  • Consulte o branch 1.3 para à versão com suporte ao CakePHP 1.3 e PHP >= 5.2
  • Consulte os testes incluído no plugin para ver melhor seu funcionamento
Something went wrong with that request. Please try again.