/** * Finds user by [[username]] * * @return User|null */ protected function getUser() { if ($this->_user === null) { $this->_user = User::findByEmail($this->email); } return $this->_user; }
/** * Logs in a user using the provided username and password. * * @return boolean whether the user is logged in successfully */ public function login() { if ($this->validate()) { try { if (!Purina::init()->login($this->email, $this->password)) { $db_user = User::findByEmail($this->email); if ($db_user) { $db_user->status = User::STATUS_DISABLED; $db_user->save(); } $data = Purina::getData(); if ($data->message) { $this->addError('password', Yii::t('frontend/base', $data->message)); } else { $this->addError('password', 'Не верный логин или пароль.'); } return false; } else { $user = Purina::getData(); $db_user = User::findByEmail($this->email); if (!$db_user) { $db_user = new User(); $db_user->id = $user->id; $db_user->firstname = $user->firstname; $db_user->lastname = $user->lastname; $db_user->email = $user->email; $db_user->token = $user->token->key; $db_user->token_expire = $user->token->expire; $db_user->created_at = Yii::$app->formatter->asTimestamp($user->register_date); $db_user->updated_at = $db_user->created_at; $db_user->setPassword($this->password); } else { $db_user->token = $user->token->key; $db_user->token_expire = $user->token->expire; } $db_user->status = User::STATUS_ACTIVE; if (!$db_user->save()) { return false; } $duration = $user->token->expire - Yii::$app->formatter->asTimestamp('now'); if (!Yii::$app->user->login($db_user, $duration)) { $this->addError('password', 'Не удалось авторизоваться.'); return false; } else { return true; } } } catch (\Exception $e) { $this->addError('password', 'Не удалось авторизоваться.'); return false; } } return false; }