I have the following code to reset my password via a link through email (that works fine).
In my User Controller:
public function resetpw($token = null) {
$resetpw = $this->Users->findByToken('id');
if ($this->request->is('post')) {
$pw = $this->request->data['password'];
$pwtable = TableRegistry::get('Users');
$newpw = $pwtable->find($resetpw);
$newpw->password = $pw;
if ($pwtable->save($newpw)) {
$this->Flash->success(__('Your password has been successfully updated.'));
return $this->redirect(['action' => 'login']);
}
else {
$this->Flash->error(__('Your password could not be saved. Please, try again.'));
}
}
}
The Reset Password CTP file:
Resetting your password?
<?= $this->Flash->render(); ?>
<?= $this->Form->create() ?>
<fieldset>
<legend><?= __('Please enter your new password.') ?></legend>
<?= $this->Form->input('password', ['label' => 'New Password']) ?>
<?= $this->Form->input('confirmpassword', ['type' => 'password', 'label' => 'Confirm New Password']) ?>
</fieldset>
<?= $this->Form->button(__('Update password')); ?>
<?= $this->Form->end() ?>
I also have the following rules regarding comparing the two passwords:
public function validatePasswords($validator)
{
$validator->add('confirmpassword', 'no-misspelling', [
'rule' => ['compareWith', 'password'],
'message' => 'The passwords are not the same.',
]);
return $validator;
}
After typing in two identical passwords for both the password & comfirmpassword fields, I get the following error:
Unknown finder method "SELECT Users.id AS Users__id
, Users.username AS Users__username
, Users.password AS Users__password
, Users.email AS Users__email
, Users.role AS Users__role
, Users.token AS Users__token
FROM users Users WHERE Users.token = :c0"
I'm not really sure what this means and how I go about resolving it.
Aucun commentaire:
Enregistrer un commentaire