You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							58 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							58 lines
						
					
					
						
							1.2 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace app\models; | 
						|
 | 
						|
use Yii; | 
						|
use yii\base\Model; | 
						|
 | 
						|
/** | 
						|
 * LoginForm is the model behind the login form. | 
						|
 */ | 
						|
class LoginForm extends Model | 
						|
{ | 
						|
	public $username; | 
						|
	public $password; | 
						|
	public $rememberMe = true; | 
						|
 | 
						|
	/** | 
						|
	 * @return array the validation rules. | 
						|
	 */ | 
						|
	public function rules() | 
						|
	{ | 
						|
		return [ | 
						|
			// username and password are both required | 
						|
			[['username', 'password'], 'required'], | 
						|
			// password is validated by validatePassword() | 
						|
			['password', 'validatePassword'], | 
						|
			// rememberMe must be a boolean value | 
						|
			['rememberMe', 'boolean'], | 
						|
		]; | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Validates the password. | 
						|
	 * This method serves as the inline validation for password. | 
						|
	 */ | 
						|
	public function validatePassword() | 
						|
	{ | 
						|
		$user = User::findByUsername($this->username); | 
						|
		if (!$user || !$user->validatePassword($this->password)) { | 
						|
			$this->addError('password', 'Incorrect username or password.'); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * 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()) { | 
						|
			$user = User::findByUsername($this->username); | 
						|
			Yii::$app->user->login($user, $this->rememberMe ? 3600*24*30 : 0); | 
						|
			return true; | 
						|
		} else { | 
						|
			return false; | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |