Conheça as melhorias da versão 8.0, 8.1, 8.2!
Clique aqui para saber mais
Uma validação Bom dia pessoal. Estou com uma dificuldade no Adianti. Criei um formulário padrao, esta tudo funcionando direitinho, mas antes de salvar preciso fazer um MD5 no campo senha : como faço isso dentro da estrutura criada pelo adianti framework ? onde faço essa transformação ? Desde ja agradeço....
FM
Uma validação  
Fechado
Bom dia pessoal. Estou com uma dificuldade no Adianti. Criei um formulário padrao, esta tudo funcionando direitinho, mas antes de salvar preciso fazer um MD5 no campo senha :
 
  1. <?php
  2. $senha = MD5($senha);
  3. ?>


como faço isso dentro da estrutura criada pelo adianti framework ? onde faço essa transformação ?
Desde ja agradeço.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


WG

Eu geralmente faço no método store do model.
Geralmente o código da store do model está assim:

 
  1. <?php
  2. public function store()
  3. {
  4. // store the object itself
  5. parent::store();
  6. // ... Restante do código para persistência, etc
  7. }
  8. ?>


Antes de chamar o método store da classe pai, faz o hash da senha...

public function store()
{
// hash md5
$this->senha = md5($senha);

// store the object itself
parent::store();

// ... Restante do código para persistência, etc
}

?>

Porém vai enfrentar um problema, que seria o caso de uma edição onde acabaria aplicando o hash novamente... então aconselho a fazer o hash apenas quando está inserindo... e criar um método específico para alterar a senha...

public function store()
{
// hash md5
if(!isset( $this->id) )
{
$this->senha = md5($this->senha);
}

// store the object itself
parent::store();

// ... Restante do código para persistência, etc
}

public function changePassword(){
// Aqui implementa troca de senha
}

?>
FM

Ola pessoal,primeiramente obrigado ao Wemerson pela atenção. Ja tinha resolvido paleativamente quando li a resposta do Wemerson que me atentou para o detalhe das edições, então criei a solução da seguinte forma. O MD5 codifica a senha e ela fica com 32 letras entao faço essa analise, se asenha for de 32 caracteres ela fica como esta, senao executo o MD5, segue código :

 
  1. <?php
  2. function onSave()
  3. {
  4. try
  5. {
  6. // open a transaction with database 'cadAluno'
  7. TTransaction::open('cadAluno');
  8. // get the form data into an active record MdlUser
  9. $object = $this->form->getData('MdlUser');
  10. $this->form->validate(); // form validation
  11. // a solução para a criptografia
  12. if(strlen($object->password) < 32)
  13. {
  14. $object->password = MD5($object->password);
  15. }
  16. $object->store(); // stores the object
  17. $this->form->setData($object); // keep form data
  18. TTransaction::close(); // close the transaction
  19. // shows the success message
  20. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  21. }
  22. catch (Exception $e) // in case of exception
  23. {
  24. // shows the exception error message
  25. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  26. $this->form->setData( $this->form->getData() ); // keep form data
  27. // undo all pending operations
  28. TTransaction::rollback();
  29. }
  30. }
  31. ?>