views:

115

answers:

1

Hello :) I'm working on the signup process and want to check if the two passwords (password + re-entered password) are equal. These are my validation rules in the User Model:

var $validate = array(
'username' => array( 
        'notEmpty' => array( 
                'rule' => array('minLength', 5), 
                'required' => true, 
                'allowEmpty' => false, 
                'message' => 'User name has to be at least 5 characters long' 
            ),
 array(
  'rule' => 'isUnique',
  'message' => 'User name taken. Use another'
 )
),
'password' => array(
            'notEmpty' => array( 
                'rule' => array('minLength', 6), 
                'required' => true, 
                'allowEmpty' => false, 
                'message' => 'Password has to be at least 6 characters long'
 ),
 'password_similar' => array( 
             'rule' => 'checkPasswords',
                'message' => 'Entered passwords does not match' 
        )
),
'email' => array(
 'rule' => 'email',
 'required' => true,
 'allowEmpty' => false,
 'message' => 'Please enter a valid email'
)

);

In the users_controller.php I have the checkPasswords Function:

function checkPasswords($data) { 
  if($data['password'] == $this->data['User']['password2hashed']) 
            return true; 
        else
   return false; 
 }

An my singup function looks like this:

function signup(){ 
        if (!empty($this->data)) { 
   if(isset($this->data['User']['password2'])) 
             $this->data['User']['password2hashed'] = $this->Auth->password($this->data['User']['password2']); 


   $this->User->create(); 

   if ($this->User->save($this->data)) {

. . . }

No matter what I do, the passwords do not match. Even if I change the checkPasswords function to this:

function checkPasswords($data) { 
    return true;
}

What could case this behavior?

A: 

OMG I just realised that the checkPasswords Function is not supposed to be in the controller but in the model. Problem solved, I'm ashamed...

nolandark