ID do usuario

Estou usando o formulario de login padrão do yii, criei uma tabela no banco de dados usuarios, com os dados do usuario. Fiz uma função que me retorna um array de usuario e senha, e chamei no UserIdentity.

Depois disso ficou tudo tranquilo, só que eu queria o "ID" da tabela quando o usuário estivesse logado.

Tem como eu fazer isso, e alem disso tambem?

1 Like

É galera, eu mesmo consegui resolver. Para quem tiver uma dúvida como a minha segue ai:




if($model->validate() && $model->login()){

                               // retorno os dados do usuario de acordo com usuario e senha

				$inf_user = Usuarios::model()->findByAttributes(array(

						'usuario'=>$model->username,

						'senha' =>$model->password

						)); 

                                // depois seto o id e o name (propriedades de user)

				Yii::app()->user->setId($inf_user->usuario_id);

				Yii::app()->user->setName($inf_user->nome.' '.$inf_user->sobrenome);

				$this->redirect(Yii::app()->user->returnUrl);

			}



depois é só chamar no lugar que você quiser:




Yii::app()->user->getId();

Yii::app()->user->getName();



Claro que só irá aparecer se o usuario estiver logado no site.

Abraços, e resolvi rápido o meu proprio problema… rsrsrsrsrs

:D

Galera surgiu uma duvida. E se eu quiser incluir mais dados? Alguem sabe como posso fazer isso? Exemplo: endereco = setEndereco e getEndereco

Acácio,

Vou postar meu ClientIdentify, que é o CUserIdentify da tabela de clientes do banco de dados, que são os clientes que irão logar no site para publicar seus produtos.




class ClienteIdentity extends CUserIdentity {


    public function authenticate() {


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

        $senha = $this->password;

        $model = Cliente::model()->find(array(

            'condition' => "LOWER(email) = :email AND senha = :senha AND liberar = :liberar",

            'params' => array(

                ':email' => $email,

                ':senha' => Cliente::model()->hashPassword($senha),

                ':liberar' => 1

            )

                ));


        if ($model === null) {

            $this->errorCode = self::ERROR_USERNAME_INVALID;

        } else if (!$model->validatePassword($senha)) {

            $this->errorCode = self::ERROR_PASSWORD_INVALID;

        } else {


            foreach ($model as $key => $value) {

                $this->setState($key, (string) $value);

            }


            $this->username = $model->usuario;

            $this->errorCode = self::ERROR_NONE;

        }


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

    }


}



Observa o foreach() que adicionei, os setState() adiciona na sessão o usuário logado todos os dados da tabela.

Ai você chama assim:


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

Yii::app()->user->nome;

Yii::app()->user->email;

Muito obrigado cara, resolveu a minha vida, rsrsrs :D

Até mais.