Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tylër

[Resolvido] Validando confirmação de senha criptografada pelo Mod

Recommended Posts

Eu estou enfrentando este problema agora...

 

http://forum.imasters.com.br/topic/433492-confirm-password-sem-field-em-tabela/page__gopid__1712310#entry1712310

 

Eu segui como no link:

 

http://www.littlehar...ephp-12-part-ii

 

Eu realizo as validaçoes no model, entao tive que segui como no link, com algumas modificaçoes é claro... mas acontece que nao me retorna nenhum erro de validacao mas nao cadastra =/

 

models/user.php

 

'pass' => array(
       	'notempty' => array(
           	'rule' => array('notempty'),
           	'message' => 'Enter a password!',
       	),
       	'maxLength' => array(
           	'rule' => array('maxLength', 120),
           	'message' => 'Maximum of 120 caracters!',
       	),
       	'confirmPassword' => array(
           	'rule' => array( 'confirmPassword', 'pass' ),
           	'message' => 'Passwords do not match!',
       	),
   	),

   	'confirm_pass' => array(
       	'notempty' => array(
           	'rule' => array('notempty'),
           	'message' => 'Enter a password confirmation!',
       	),
       	'maxLength' => array(
           	'rule' => array('maxLength', 120),
           	'message' => 'Maximum of 120 caracters!',
       	),
   	),


public function confirmPassword ($data) {
   	$valid = FALSE;

   	$confirm_pass = $this->data['User']['confirm_pass'];
   	if( !empty($confirm_pass) ) {
       	if ( $data['pass'] === Security::hash($confirm_pass, 'sha256', true) ) {
           	$valid = TRUE; // senhas batem
       	}
       	return $valid;
   	}
}

 

login10.png

 

Na imagem acimamostra o campo password após eu clicar em "confirmar", bom, nem ele e nem o campo de confirmaçao de senha mostram erros quando preenchidos corretamente, mas lá em cima, diz que não pôde salvar! =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

O nome do seu field (na view) deve ter o mesmo nome do seu validate (no model).

 

Mas você também pode definir no field de sua view um texto e nome de cada validação no atributo "error".

Ex:

echo $this->Form->input('name', array('label' => __('Nome', true), 'div' => true, 'error' => array('notempty' => __('Este campo precisa ser preenchido.', true))));

 

A vantagem de ser na view é que fica mais fácil de fazer o texto ser multi-idiomas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<br />O nome do seu field (na view) deve ter o mesmo nome do seu validate (no model).<br /><br />Mas você também pode definir no field de sua view um texto e nome de cada validação no atributo "error".<br />Ex:<br />
echo $this->Form->input('name', array('label' => __('Nome', true), 'div' => true, 'error' => array('notempty' => __('Este campo precisa ser preenchido.', true))));

<br /><br />A vantagem de ser na view é que fica mais fácil de fazer o texto ser multi-idiomas.<br />

<br /><br /><br />

 

Bom, nao entendi o que disse, pois o 'pass' e 'confirm_pass' que estao no model, são os campos field da view sim ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar isso em seu controller para imprimir os erros de validação.

 

$errors = $this->ModelName->invalidFields();
debug($errors);

 

Obs:

Lembre-se de que para usar o debug() o Configure::write('debug', 1); deve estar definido como 1 ou 2.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

tudo bom?

vamos lá!

Primeiro é necessário criar uma função extra para validação:

 

em seu Model crie a função

 

/*
* Function cofirmpass
* Confirma campo de senha
* @params $compare_field  campo a ser comparado
* @params $check primeiro campo
* @return true caso seja igual
* @public
*/
function confirmpass($check, $compare_field)  
       { 

	#Valor do primeiro campo
       $value = array_values($check);
	$value = $value[0];

              #Importa Auth Componente		
	App::import('Component','Auth');
	$auth = new AuthComponent;

	return ($auth->password($value)==$this->data['User'][$compare_field]);
   } 

 

na validação coloque

'confirm_pass'=>array(
	      'rule'=>array('confirmpass','nome_do_campo_senha'),
	      'required'=>true,
	      'message'=>'Confirmação não é igual a Senha'
						  )

 

espero que ajude.

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites
espero que ajude.

abraços

 

Bom, eu já tinha função de validaçao e já tinha validado com validates no Model, o problema é que a função está correta, mas mesmo assim os dados não são gravados..

 

Tenta usar isso em seu controller para imprimir os erros de validação.

 

$errors = $this->ModelName->invalidFields();
debug($errors);

Puxa, ajudou mesmo, tinha um campo que deveria estar setado no controler com valor 0, que era o is_admin, e que eu nao conseguia lembrar, já que foi um campo que criei por último na tabela,,... ufa... que bom que resolvi! ^^

 

 

Obg aos dois! ;)

 

Este era o único problema que eu tinha com auth! =D

 

Valeu, precisando, estamos aí! ;)

 

[ RESOLVIDO!!! ]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.