Контроллер
Код: Выделить всё
public function actionLogin()
{
$model=new LoginForm;
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
if($model->validate() && $model->login())
$this->redirect(Yii::app()->user->returnUrl);
}
$this->render('login',array('model'=>$model));
}
Код: Выделить всё
class LoginForm extends CActiveRecord
{
public $us_login;
public $us_pass;
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'user';
}
public function rules()
{
return array(
array('us_login, us_pass', 'required'),
array('us_pass', 'authenticate', 'on' => 'login'),
);
}
public function attributeLabels()
{
return array(
'us_login' => 'Логин',
'us_pass' => 'Пароль',
);
}
public function authenticate($attribute,$params)
{
// Проверяем были ли ошибки в других правилах валидации.
// если были - нет смысла выполнять проверку
if(!$this->hasErrors())
{
$identity= new UserIdentity($this->us_login, $this->us_pass);
$identity->authenticate();
switch($identity->errorCode)
{
case UserIdentity::ERROR_NONE: {
break;
}
case UserIdentity::ERROR_USERNAME_INVALID: {
// Если логин был указан наверно - создаем ошибку
$this->addError('us_login','Пользователь не существует!');
break;
}
case UserIdentity::ERROR_PASSWORD_INVALID: {
// Если пароль был указан наверно - создаем ошибку
$this->addError('us_pass','Вы указали неверный пароль!');
break;
}
}
}
}
}
Код: Выделить всё
<div id="simpleMenu2" class="form">
<h1>Авторизация</h1>
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'login-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>false,
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => true,
),
)); ?>
<div class="row">
<?php echo $form->labelEx($model,'us_login'); ?>
<?php echo $form->textField($model,'us_login'); ?>
<?php echo $form->error($model,'us_login'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'us_pass'); ?>
<?php echo $form->passwordField($model,'us_pass'); ?>
<?php echo $form->error($model,'us_pass'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Вход'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->