Xevious
(Xeviousbr)
September 4, 2014, 7:26pm
1
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')
Xevious
(Xeviousbr)
September 4, 2014, 8:25pm
3
davi_alexandre:
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
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.
Xevious
(Xeviousbr)
September 4, 2014, 9:16pm
5
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