[Resolvido] Problema Com Campo Visível Só Pro Admin

Tem um campo que tem que aparecer só se o usuário for admin.

Então tem esse código lá na numa view


<?php if (Yii::app()->user->checkAccess('admin')) { ?>

Mas não ta funcionando, altero o perfil do usuário e sempre mostra o campo.

Então resolvi testar diretamente o campo Cod_Perfil_Usuario da tabela Usuario

mas não consegui até agora :(

coloquei esta linha


$user= Usuario::model()->findByPk(Yii::app()->session['Cod_Vendedor']);

não da erro, e dentro de $user tem é o nome do usuário…

e quando vou dar o comando pra pegar o campo Cod_Perfil_Usuario da erro


$codPerfil = $user->Cod_Perfil_Usuario;

O erro é

Trying to get property of non-object

Mas… derrepente alguém pode ter alguma ideia sobre porque o código


<?php if (Yii::app()->user->checkAccess('admin')) { ?>

não ta funcionando

O checkAccess funciona junto com o Authentication Manager. Você vai precisar configura-lo se quiser utiliza-lo: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#role-based-access-control

Se não quiser fazer isso, você pode apenas verificar o nome do usuário (É uma má prática, mas funciona):




if(Yii::app()->user->name == 'admin')



Mas esse site tem vários adminstradores, e nenhum com nome admin :huh:

E como eu poderia verificar o valor do campo Cod_Perfil_Usuario

Dá uma lida no link que eu passei que tá explicando direitinho como funciona toda a parte de autorização e autenticação do framework. Depois, se surgir alguma dúvida, posta aqui que eu ajudo.

Resolvi o problema com a linha abaixo


if (Yii::app()->user->isAdmin === TRUE) {

Antes tava assim


if (Yii::app()->user->checkAccess('admin')) { 

Mas daí não aparecia para ninguém, nem se fosse do perfil admin :huh: