0
votes

I m trying to create a new register and login page. I have a problem in login.

1) After I register the Username and Password it is successful hashed and saved into the DB, please find the codes below: (everything is as per cake conventions)

User.php:

<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {
......
public function beforeSave() {
    if (isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
    }
    return true;
}
}
?>

UsersController.php:

public function add() {
    if ($this->request->is('post')) {
        $this->User->create();
        if ($this->User->saveAll($this->request->data)) {
            $this->Session->setFlash(__('The user has been saved'));
            $this->redirect(array('controller' => 'Posts','action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.'));
        }
    }
}

public function login() {
    if ($this->Auth->login()) {
        $this->redirect($this->Auth->redirect());
    } else {
        $this->Session->setFlash(__('Invalid username or password, try again'), 'default', array(), 'auth');
    }
}

public function logout() {
    $this->redirect($this->Auth->logout());
}

login.ctp:

<fieldset>
<?php echo $this->Session->flash('auth'); ?>
</fieldset>
<?php echo $this->Form->create('Users');?>
<fieldset>
<?php
    echo $this->Form->input('username');
    echo $this->Form->input('password');
?>
</fieldset>
<?php echo $this->Form->end(__('Login'));?>

Debug: (debug($this->data);)

From AppController:

Array
(
[Users] => Array
    (
        [username] => vinodronold
        [password] => vinodronold
    )

)

From UsersController:

Array
(
[Users] => Array
    (
        [username] => vinodronold
        [password] => vinodronold
    )

)

Problem:

Whenever I access /Users/login URL I m getting "Invalid username or password, try again" message.

Also I m unable to login although I m entering the correct username and password.

Please help.

Thanks in advance!!!

1
Everything looks correct. Have you confirmed the password is being stored in the database encrypted? - Chuck Burgess
yes. the password is stored after hash. $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); is there any setting to be done, am I missing anything.. - Vinod Ronold

1 Answers

0
votes

Looking at it closer, change your if statement on the login function to this:

if (!empty($this->request->data['User']) && $this->Auth->login()) {

this will fix the instant error message you get when accessing the page.

And I just noticed your form in your view is wrong. Models are singular. Change your form create to:

<?php echo $this->Form->create('User');?>

This should do it for both issues.