mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-20 08:27:21 +08:00
Advanced application template
This commit is contained in:
58
apps/advanced/common/models/LoginForm.php
Normal file
58
apps/advanced/common/models/LoginForm.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?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 array(
|
||||
// username and password are both required
|
||||
array('username, password', 'required'),
|
||||
// password is validated by validatePassword()
|
||||
array('password', 'validatePassword'),
|
||||
// rememberMe must be a boolean value
|
||||
array('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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user