Forráskód Böngészése

One less SQL query for login sequence in basic and advanced apps

Alexander Makarov 12 éve
szülő
commit
302b25026c
1 módosított fájl, 17 hozzáadás és 2 törlés
  1. 17 2
      models/LoginForm.php

+ 17 - 2
models/LoginForm.php

@@ -13,6 +13,7 @@ class LoginForm extends Model
 	public $username;
 	public $password;
 	public $rememberMe = true;
+	private $_user;
 
 	/**
 	 * @return array the validation rules.
@@ -35,7 +36,7 @@ class LoginForm extends Model
 	 */
 	public function validatePassword()
 	{
-		$user = User::findByUsername($this->username);
+		$user = $this->getUserByUsername($this->username);
 		if (!$user || !$user->validatePassword($this->password)) {
 			$this->addError('password', 'Incorrect username or password.');
 		}
@@ -48,11 +49,25 @@ class LoginForm extends Model
 	public function login()
 	{
 		if ($this->validate()) {
-			$user = User::findByUsername($this->username);
+			$user = $this->getUserByUsername($this->username);
 			Yii::$app->user->login($user, $this->rememberMe ? 3600*24*30 : 0);
 			return true;
 		} else {
 			return false;
 		}
 	}
+
+	/**
+	 * Finds user by username
+	 *
+	 * @param string $username
+	 * @return User|null
+	 */
+	private function getUserByUsername($username)
+	{
+		if ($this->_user === null) {
+			$this->_user = User::findByUsername($username);
+		}
+		return $this->_user;
+	}
 }