Добавить свою ошибку в errorCode при авторизации

Здравствуйте. При авторизации в UserIdentity есть проверка имени и пароля и вывод соответствующих ошибок ($this->errorCode=self::ERROR_USERNAME_INVALID, $this->errorCode=self::ERROR_PASSWORD_INVALID).

Как можно добавить свою проверку, чтобы она проверяла статус аккаунта - активен он или нет (0, 1) и выводила соответствующее сообщение?

В том же классе UserIdentity объявить соответствующие константы и пользоваться:




class UserIdentity extends CUserIdentity

{

    const ERROR_USER_INACTIVE = 3;

    

    // ...

}



Почему 3? 0, 1, 2 и 100 заняты (см. класс CBaseUserIdentity).

Смотрел, добавил. Но как добавить еще свое сообщение для этой ошибки? Сейчас выдает что неправильный логин или пароль.

Сделать соответствующие изменения в LoginForm.php. См. пример в Blog Tutorial: http://www.yiiframework.com/doc/blog/1.1/ru/prototype.auth

Я поступил так:


<?php

class UserIdentity extends CUserIdentity

{

    private $_id;

    const ERROR_USER_INACTIVE = 3;

    public function authenticate()

    {

        $username=strtolower($this->username);

        $user=User::model()->find('LOWER(username)=?',array($username));

        if($user===null)

            {

                $this->errorCode=self::ERROR_USERNAME_INVALID;

                return $this->errorCode;

            }

        else if(!$user->validatePassword($this->password))

            {

                $this->errorCode=self::ERROR_PASSWORD_INVALID;

                return $this->errorCode;

            }

            

        else if($user->is_confirmed!=true)

        {

            $this->errorCode=self::ERROR_USER_INACTIVE;

            return $this->errorCode;

        }

            else

        {

            $this->_id=$user->id;

            $this->username=$user->username;

            

            $this->errorCode=self::ERROR_NONE;

        }

        return $this->errorCode=self::ERROR_NONE;

    }

 

    public function getId()

    {

        return $this->_id;

    }

}

далее loginFrom




if(!$this->hasErrors())

		{

			$this->_identity=new UserIdentity($this->username,$this->password);

                        

			/*if($this->_identity->authenticate()!==0)

				$this->addError('password','Не правильное имя пользователя или пароль');*/

                        //var_dump($this->_identity->authenticate());

                        switch($this->_identity->authenticate()){

                            case 1:

                                $this->addError('username','Не правильное имя пользователя');

                                break;

                            case 2:

                                $this->addError('password','Не правильный пароль');

                                break;

                            case 3:

                                $this->addError('username','Пользователь не активирован');

                                break;

                        }



Дальше думаю понятно. Надеюсь кому нибудь поможет.