jstuardo  
          
              
                September 27, 2009, 11:41pm
               
              1 
           
         
        
          Hello…
I’m having problems adding a new property to CWebUser object. I have followed the document at http://www.yiiframework.com/doc/cookbook/6/  but even if I follow the instructions, it does not help.
Inside authenticate method of UserIdentity class I wrote:
$this->setState('administrador', $user->administrador);
where $user->administrador has actually a value of 1.
After that instruction, I wrote
Yii::app()->user->administrador
but an error is shown telling that property is undefined.
If I use getState method instead, an empty value is returned.
Framework version is yii-1.0.7.r1212
Thanks in advance for your help…
Jaime
         
        
           
         
            
       
      
      
        
          
          
            jstuardo  
          
              
                October 2, 2009,  8:22pm
               
              3 
           
         
        
          Hello Polydoro…
That doesn’t work because he really didn’t show the solution.
This is the whole authenticate method if you can discover what is happening:
	public function authenticate()
	{
	    $username=strtolower($this->username);
	    
	    // Si el nombre de usuario es 'admin', verifica la password del superadministrador
	    if ($username == 'admin')
	    {
	        if (md5($this->password) == '65334ae9c30abb1f0c45e4041925c504')
	        {
	            $this->_id = -1;
	            $this->setState('administrador', 1);
	            $this->errorCode=self::ERROR_NONE;
	        }
	        else
	            $this->errorCode=self::ERROR_PASSWORD_INVALID;
	    }
	    else
	    {
            $user=Usuario::model()->find('LOWER(username)=?',array($username));
            if($user===null)
                $this->errorCode=self::ERROR_USERNAME_INVALID;
            else if(md5(md5($this->password).Yii::app()->params["salt"])!==$user->password)
                $this->errorCode=self::ERROR_PASSWORD_INVALID;
            else
            {
                $this->_id=$user->id;
                $this->username=$user->username;
                $this->setState('administrador', $user->administrador);
                $this->errorCode=self::ERROR_NONE;
            }
	    }
	    if ($this->errorCode == self::ERROR_NONE)
	    {
	        $auth=Yii::app()->authManager;
	        $auth->createRole('admin', 'Usuario Administrador', 'return Yii::app()->user->administrador');
	        $auth->assign('admin', $username);
	        //echo "-->" . Yii::app()->user->getState('administrador');
	        //exit();
	    }
	    
	    return !$this->errorCode;
	}