Yii::app()->user->id; gets name of user not ID

Hi there

I was trying to get user id but I am failing to get and

echo Yii::app()->user->id; or echo Yii::app()->user->getId();

returns the name of user which is wearied. Any idea what is wrong?


<?php


/**

 * UserIdentity represents the data needed to identity a user.

 * It contains the authentication method that checks if the provided

 * data can identity the user.

 */

class UserIdentity extends CUserIdentity

{

    private $_id;

	/**

	 * Authenticates a user.

	 * The example implementation makes sure if the username and password

	 * are both 'demo'.

	 * In practical applications, this should be changed to authenticate

	 * against some persistent user identity storage (e.g. database).

	 * @return boolean whether authentication succeeds.

	 */

	public function authenticate()

	{

            $user=User::model()->findByAttributes(array('username'=>$this->username));

            if($user===null)

                {

                $this->errorCode=self::ERROR_USERNAME_INVALID;

                }

            else 

                {

                if($user->password!==$user->encrypt($this->password))

                   {

                   $this->errorCode=self::ERROR_PASSWORD_INVALID;

                   }

               else

                   {                       

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

                   

                $this->errorCode=self::ERROR_NONE;

                  }

               }

        return !$this->errorCode;

    }

 

    public function getId()

    {

        return $this->_id;

    }

    

    

}

the getId() calls method of CWebuser, not UserIdentity class’s. So take a look CWebuser or call setState(‘id’, ‘name’) of the CWebuser class. However Yii::app()->user is object of CWebuser class.

ok but I have other project that was made by some one else and it returns user id on calling

Yii::app()->user->id

strange

You must override the UserIdentity’s id to return user id. Below is the example of my UserIdentity:


class UserIdentity extends CUserIdentity

{

	private $_id; //add this

	

	public function authenticate()

	{

		...

                //if the login success

				$this->errorCode=self::ERROR_NONE;

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

		...

		

		return !$this->errorCode;

	}

	

        /**add this function **/

	public function getId() 

	{

		return $this->_id;

	}

}

Please Click Here this link. I think it will be helpful for you. I used that in many application.