У меня есть следующая функция, которая находит подходящего пользователя и меняет его статус на активный:
public function activate ($username = null, $key = null)
{
if ($username == null || $key == null)
{
$this->redirect(array('action' => 'login'));
}
if ($this->User->hasAny(array(
'User.username' => $username,
'User.activation_key' => $key,
'User.status' => 0,
)))
{
$user = $this->User->findByUsername($username);
$this->User->id = $user['User']['id'];
$this->User->saveField('status', 1);
$this->User->saveField('activation_key', md5(uniqid()));
$this->Session->setFlash(__('Account activated successfully.', true), 'default', array('class' => 'success'));
}
else
{
$this->Session->setFlash(__('An error occurred.', true), 'default', array('class' => 'error'));
}
$this->redirect(array('action' => 'login'));
}
Но это if statement: if ($this->User->hasAny(array(
'User.username' => $username,
'User.activation_key' => $key,
'User.status' => 0,
)))
даже необходимо, так как мне все еще нужно найти пользователя по его адресу электронной почты (который, очевидно, уникален)