Closed edukmattos closed 8 years ago
Bom dia @ecmattos
Você pode personalizar as mensagens de resposta fazendo conforme descreve aqui.
O user.name aparece justamente porque não foi encontrada a propriedade name no objeto user, verifique se seu registro de log comtém um usuário vinculado. Este é o usuário responsável pela alteração do registro auditado, o mesmo é vinculado caso esteja logado, o contrário o campo user fica como null e user.name irá aparecer na sua mensagem personalizada. Vou implementar a possibilidade de adicionarmos valores defaults para esta situação.
Realmente os camos nulos não são omitidos das mensagens de logs, essa é uma melhoria que pretendo adicionar ainda esta semana.
@anteriovieira Oi ! Obrigado pelo retorno ! A minha tabela user já possui o id 1 e o name correspondente ecmattos. Eu não preciso fazer o relacionamento entre as tabelas users e logs ?
@anteriovieira, Quanto a omissão das mensagens de logs quando os old.campo e new.campo são nulos , seria apenas uma modificação no arquivo auditing.blade.php ?
@ecmattos , não precisa fazer o relacionamento do log com o user, este relacionamento já esta presente no model log com o trecho de código a seguir:
public function user()
{
return $this->belongsTo(\Config::get('auth.model'));
}
Agora uma coisa que temos que ficar atento é definir corretamente o model do usuário no arquivo de configuração
config\auth.php
, pois precisamos saber qual é o model do usuário que temos que relacionar.
Agora se você quiser buscar todos os logs registrados por um usuário X fazendo $user->logs
, ai sim você precisaria relacionar, neste caso poderia fazer assim:
use OwenIt\Auditing\Auditing;
use OwenIt\Auditing\Log;
class User extends Auditing
{
// ...
public function logs()
{
return $this->hasMany(Log::class, 'user_id');
}
}
Quanto a omissão dos campos nulos, não temos um template auditing.blade para as mensagens, vou ter que alterar a lógica na hora de montar as mensagens. Uma outra ideia futura é adicionar um aquivo de config para caso o desenvolvedor queira alterar funcionalidades padróes do pacote.
No exemplo acima eu fiz o extends do Auditing
, mas só se faz necessário caso também queira auditar os dados de usuário, se este não for o caso pode retirar o use OwenIt\Auditing\Auditing;
.
@anteriovieira O arquivo pelo qual me referia era o seguinte:
// resources/views/my-app/auditing.blade.php
...
<ol>
@forelse($logs as $log)
<li>
{{ $log->customMessage }}
<ul>
@forelse($log->customFields as $field => $message)
<li>{{ $message }}</li>
@endforelse
</ul>
</li>
@empty
<p>No logs</p>
@endforelse
</ol>
...
@anteriovieira meu config/auth.php está assim
/* | -------------------------------------------------------------------------- | Authentication Model |
---|---|---|
When using the "Eloquent" authentication driver, we need to know which | ||
Eloquent model should be used to retrieve your users. Of course, it | ||
is often just the "User" model but you may use whatever you like. | ||
*/
'model' => App\User::class,
/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'users',
Seu model User
esta localizado conforme sua configuração?
'model' => App\User::class,
@anteriovieira meu config/auth.php está assim
/* | -------------------------------------------------------------------------- | Authentication Model |
---|---|---|
When using the "Eloquent" authentication driver, we need to know which | ||
Eloquent model should be used to retrieve your users. Of course, it | ||
is often just the "User" model but you may use whatever you like. | ||
*/
'model' => App\User::class,
/* | -------------------------------------------------------------------------- | Authentication Table |
---|---|---|
When using the "Database" authentication driver, we need to know which | ||
table should be used to retrieve your users. We have chosen a basic | ||
default value but you may easily change it to any table you like. | ||
*/
'table' => 'users',
Pensei que tivesse resolvido mas continua aparecendo {user.name} nos logs.
Removas os registros de logs do banco e tente fazer novas modificações para testar. Estou criando uma aplicação aqui para testar também. Quanto as configurações acredito que estejam certas, pois não foi retornado nenhum erro de model not found.
@anteriovieira Nao sei se pode ser isso que está causando o problema: Estou com problema na minha autenticacao que ainda vou resolver mas os dados do id 1 da tabela users estao todos preenchidos. Ao registrar os logs, o user_id vem como NULL como disseste anteriormente. Eu edito o campo user_id de NULL para 1 e deveria funcionar normalmente ? Vou limpar os logs.
Sim deveria, vou testar aqui e te dou um retorno
ok
@anteriovieira Limpei e continua {user.name} !
@anteriovieira Para ir pensando numa atualizacao (seria bem legal pois nao encontrei nada ainda):
Nas mensagens de logs, para os campos com relacoes em outras tabelas, deveria mostrar a informacao do relacionada ao campo correspondente.
Exemplo: Alterei a categoria de um produto (de TV para Celular). Na tebela logs, efetuará o registro do log da category_id de 1 para 2 mas na mensagem do log deveria mostrar de "TV" para "Celular" (textos) e nao os valores do campo.
Nao sei se de repente associar tambem: protected $doKeepLogOf = ['description', 'category_id']; // Informe os campos que deseja registrar no log. protected $do???????? = ['description ???', 'categories.id']; // Informe os campos que deseja relacionar no log.
Nao sei se me entendeste ?
Why are you emailing me?
On Oct 2, 2015, at 10:06 AM, ecmattos notifications@github.com wrote:
@anteriovieira https://github.com/anteriovieira Para ir pensando numa atualizacao (seria bem legal pois nao encontrei nada ainda):
Nas mensagens de logs, para os campos com relacoes em outras tabelas, deveria mostrar a informacao do relacionada ao campo correspondente.
Exemplo: Alterei a categoria de um produto (de TV para Celular). Na tebela logs, efetuará o registro do log da category_id de 1 para 2 mas na mensagem do log deveria mostrar de "TV" para "Celular" (textos) e nao os valores do campo.
Nao sei se de repente associar tambem: protected $doKeepLogOf = ['description', 'category_id']; // Informe os campos que deseja registrar no log. protected $do???????? = ['description ???', 'categories.id']; // Informe os campos que deseja relacionar no log.
Nao sei se me entendeste ?
— Reply to this email directly or view it on GitHub https://github.com/owen-it/laravel-auditing/issues/9#issuecomment-145031198.
@empty I dont know !
:)
On Oct 2, 2015, at 10:10 AM, ecmattos notifications@github.com wrote:
@empty https://github.com/empty I dont know !
— Reply to this email directly or view it on GitHub https://github.com/owen-it/laravel-auditing/issues/9#issuecomment-145032124.
@empty , you was mentioned in one of the comments, you can leave this issue, we will be more careful in the comments.
@anteriovieira Pensei que tinha sido culpa minha !
rsrsrs pior que foi @ecmattos , foi no comentário que você adicionou sobre o auditing.blade, mas já editei pra não referenciar mais nosso amigo empty. Coloquei ``` para encapsular o código.
Devemos fazer isso quando postar exemplos de código. Fazemos isso com Markdown.
Puts ! Obrigado !
Desculpa !
rsrsr tranquilo.
@anteriovieira Incluí ele de novo ?
Sim, sempre que você colocar @ecmattos , vai estar mencionando alguém.
@anteriovieira Agora para ele sair devo editar colocando ´´´ antes e depois do usuario dele no meu comentario acima ? e depois avisar ele para sair ?
Esquenta não, faz o sequinte estou fechando este issue, dai você abre outro com a nossa questão principal.
@devthiagolino Os meus logs aparecem assim:
user.name atualizou os dados de SANTA CATARINA1 De: old.uf -> Para: new.uf updated in 2015-10-02 02:33:45 De: SANTA CATARINA -> Para: SANTA CATARINA1 updated in 2015-10-02 02:33:45 user.name atualizou os dados de SANTA CATARINA De: old.uf -> Para: new.uf updated in 2015-10-02 11:01:41 De: SANTA CATARINA1 -> Para: SANTA CATARINA updated in 2015-10-02 11:01:41
2 duvidas por mais obvias pois estou comecando a utilizar o laravel: 1) Por que ao inves do nome do usuario aparece user.name ? Tenho que fazer um relacionamento das tabelas logs e users ? 2) Como suprimir os logs onde old.campo e new.campo são nulos ?