public function authenticate() { $record = User::model()->byLogin($this->username)->find(); if ($record === null) { $this->errorCode = self::ERROR_USERNAME_INVALID; } elseif ($record->pass !== User::hashPass($this->password)) { $this->errorCode = self::ERROR_PASSWORD_INVALID; } else { if ($record->sex == '-') { $this->errorCode = self::ERROR_USER_DELETED; } else { if (!$record->can(User::CAN_LOGIN)) { $this->errorCode = self::ERROR_USER_INACTIVE; } else { $this->_id = $record->id; $this->setState("login", $record->login); $this->setState("email", $record->email); $this->setState("sex", $record->sex); $this->setState("ini", $record->ini); $this->setState("can", $record->can); $this->errorCode = self::ERROR_NONE; } } } return $this->errorCode == self::ERROR_NONE; }
public function register() { $registerForm = $this->_createRegisterForm(); $this->set('register_form', $registerForm); if ($registerForm->checkSubmitAndValidate($this->args())) { $username = $this->args('username'); if (!Verify::username($username, $reason)) { /** @var FormField $field */ $field = $registerForm->get('username'); $field->error($reason); } $email = $this->args('email'); $testUser = User::byEmail($email); if ($testUser->isHydrated()) { /** @var FormField $emailField */ $emailField = $registerForm->get('email'); $emailField->error("That email is already being used"); } if ($this->args('pass1') != $this->args('pass2')) { /** @var FormField $field */ $field = $registerForm->get('pass2'); $field->error("Your passwords do not match"); } if (!$registerForm->hasError()) { //woot! $user = new User(); $user->set('username', $username); $user->set('email', $email); $user->set('pass_hash', User::hashPass($this->args('pass1'))); $user->set('registered_on', date("Y-m-d H:i:s")); $user->save(); //create a default queue for them $q = new Queue(); $q->set("name", 'Default'); $q->set("user_id", $user->id); $q->save(); Activity::log("registered a new account on BotQueue.", $user); $text = Controller::byName('email')->renderView('new_user', array('user' => $user)); $html = Controller::byName('email')->renderView('new_user_html', array('user' => $user)); Email::queue($user, "Welcome to " . RR_PROJECT_NAME . "!", $text, $html); //automatically log them in. $token = $user->createToken(); $token->setCookie(); $this->forwardToURL("/"); } } }
public function actionReset($u, $c) { $token = RemindToken::model()->find("user_id = :user_id", ["user_id" => (int) $u]); if (!$token || !$token->check($c)) { $this->render("reset_fail"); echo ""; return; } $user = User::model()->findByPk($token->user_id); if (Yii::app()->request->isPostRequest) { $pass = $_POST["pass"]; if (strlen($pass) < 8) { Yii::app()->user->setFlash("error", "Пароль не может быть короче 8 символов. Напрягите воображение.!"); } elseif ($pass != $_POST["pass2"]) { Yii::app()->user->setFlash("error", "Пароли не совпадают, попробуйте ещё раз!"); } else { /** @todo: чувак, немножко отпустит - перепиши этот кусок, некрасиво */ $user->pass = User::hashPass($pass); $user->save(); $user->pass = $pass; $user->login(); $token->delete(); Yii::app()->user->setFlash("success", "Рады видеть вас снова!"); $this->redirect("/"); } } $this->render("reset", ["user" => $user]); }
public function register() { if ($this->args('submit') && $this->args('action') == 'register') { //validate username $username = $this->args('username'); if (!Verify::username($username, $reason)) { $errors['username'] = $reason; $errorfields['username'] = '******'; } //validate email $email = $this->args('email'); if (!Verify::email($email)) { $errors['email'] = "You must supply a valid email."; $errorfields['email'] = 'error'; } else { $testUser = User::byEmail($email); if ($testUser->isHydrated()) { $errors['email'] = "That email is already being used."; $errorfields['email'] = 'error'; } } //check passwords if ($this->args('pass1') != $this->args('pass2')) { $errors['password'] = "******"; $errorfields['password'] = '******'; } else { if (!strlen($this->args('pass1'))) { $errors['password'] = "******"; $errorfields['password'] = '******'; } } //okay, we good? if (empty($errors)) { //woot! $user = new User(); $user->set('username', $username); $user->set('email', $email); $user->set('pass_hash', User::hashPass($this->args('pass1'))); $user->set('registered_on', date("Y-m-d H:i:s")); $user->save(); //create them a default queue. $q = new Queue(); $q->set("name", 'Default'); $q->set("user_id", $user->id); $q->save(); //todo: send a confirmation email. Activity::log("registered a new account on BotQueue.", $user); //automatically log them in. $token = $user->createToken(); $token->setCookie(); $this->forwardToUrl('/'); } else { $this->set('errors', $errors); $this->set('errorfields', $errorfields); $this->setArg('username'); $this->setArg('email'); $this->setArg('pass1'); $this->setArg('pass2'); } } }