Надо использовать вместо "юзернейма" "мыло". банальная замена результата не дает. если реализоввывали или есть наброски - подскажите, пожалуйста.
Надо использовать вместо "юзернейма" "мыло". банальная замена результата не дает. если реализоввывали или есть наброски - подскажите, пожалуйста.
Что значит банальная замена? Нужно в классе UserIdentity в методе аутентификации проверять наличие переданного адреса в бд и сверять пароль.
public function authenticate()
{
$record=User::model()->findByAttributes(array('email'=>$identity->email));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==$identity->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
$this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
но это не срабатывает. пишет что код неправильный. сделал самым тупым способом. подгружаю в виджете после отправки формы авторизации юзернейм привязаные к этому мылу и авторизую так. все другие методы либо не работают, либо не срабатывают полностью - т.е. не авторизует пользователя.
может как-то криво Yii поставили? потому что всяческие "костыли" уже неоднократно приходилось делать. к тому же это очень небезопасные костыли.
Нужно так:
$user = User::model()->findByAttributes(array('email'=>$this->username));
В данном случае переданным юзернеймом будет именно емаил.
Ну и проверка пароля соответственно выполняется так:
if ($record->password!==$this->password) ...