// app/Controller/UsersController.php
...
class UsersController extends AppController {
...
// Allows the user to email themselves a password redemption token.
public function recover() {
if ($this->Auth->user()) {
$this->redirect(array('action' => 'password'));
}
if (!empty($this->data['User']['email'])) {
$user = $this->User->find('first', array(
'recursive' => -1,
'conditions' => array('User.email' => $this->data['User']['email']),
));
if ($user === false || empty($user)) {
$this->Session->setFlash('No matching user found.');
return false;
}
$Token = ClassRegistry::init('Token');
$token = $Token->generate(array('User' => $user['User']));
$this->Session->setFlash('An email has been sent to your account, please follow the instruction in this email.');
$email = new CakeEmail();
$email->template('recover', 'default');
$email->viewVars(array('user' => $user, 'token' => $token));
$email->from(array('sender@domain.com' => 'Sender'));
$email->to($this->data['User']['email']);
$email->subject('Password recovery');
$email->send();
}
}
....
}