Realizar permissões 02 ou mais no yii

50 views
Skip to first unread message

bruno da silva santos

unread,
Jun 7, 2015, 12:09:26 PM6/7/15
to yii-framew...@googlegroups.com
Estou com dificuldade de realizar login de usuários diferentes, meu programa já loga com 02 ou MAIS usuários porém chama a mesma tela.
Meu projeto da faculdade é o seleção de temas para TCC. 
01 - Coordenador - Ele faz o cloud do ALUNO, TEMA e do ORIENTADOR aparece tudo.
02 - Orientador - Ele faz o cloud só do TEMA.
03 - Aluno - Ele só se cadastra em um tema definido pelo COORDENADOR/ORIENTADOR.
logo eu queria que as telas quando logasse só aparece o que foi solicitado.
Tela do Coordenador do Orientador e do Aluno.
Olhei o YII SMARTMENU - mais não consegui entender onde colocar as programações.

Se alguém puder me ajudar, esse trabalho e de conclusão de curso e o orientador pediu o YII.
meu email e ttu...@hotmail.com, se quiser mando o código por email.
Desde já sou grato pela força. 

Sidney

unread,
Jun 7, 2015, 2:39:11 PM6/7/15
to yii-framew...@googlegroups.com
Bruno, acho que você vai precisar ser mais claro. Você falou que precisa que uma determinada tela seja exibida após o login, conforme o tipo de usuário, mas citou o YiiSmartMenu que não tem a ver com isso, mas sim com a exibição de menus (e submenus) conforme as permissões.

Dê um exemplo melhor do que pretende fazer e também explique melhor qual o real problema que está tendo, talvez fique mais fácil alguém na lista se dispor a ajudar.

Ex: não faço ideia do que vc tem em mente quando diz que "usuário X faz o cloud de Y", e nem quando diz "eu queria que as telas quando logasse só aparece o que foi solicitado", não ficou claro que telas e nem o que realmente foi solicitado. Pelo menos não pra mim que sou lento pra interpretar algumas coisas.

Abraço.

Atenciosamente,
Sidney Lins
------

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/yii-framework-brasil/78adf733-a00a-4ecc-bd3f-a489b3b31286%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

bruno da silva santos

unread,
Jun 7, 2015, 6:42:05 PM6/7/15
to yii-framew...@googlegroups.com
Sidney obrigado pela atenção, o que eu quero e criar login para 03 ou mais usuários, sendo que só permita o usuário a ter acesso restrito.
o admin acessa tudo.
Os outros  usuários colocar restrições de acesso.
Para que a tela que chamo venha só o que o usuário vá usar.

Ex. No meu caso o Aluno só vai ver a opção no menu de TEMA.

O Admin - vai vir com as opções de ORIENTADOR, TEMA, ALUNO.
uma vez que ele pode cadastrar, excluir, alterar e consultar. 
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-brasil+unsub...@googlegroups.com.

Almir Bolduan

unread,
Jun 7, 2015, 10:21:11 PM6/7/15
to yii-framew...@googlegroups.com
Boa noite Bruno,

Pela sua explicação, creio que não seja necessário criar toda a estrutura de RBAC (Role Based Access Control) do Yii.  Uma alternativa mais simples vai servir.
A explicação completa está neste post http://www.yiiframework.com/wiki/328/simple-rbac/ .  Em resumo:

- Você vai criar uma coluna "roles" na sua tabela de usuários.  Nesta coluna você irá informar o tipo de usuário: admin, aluno, etc.;
- Estenda a classe CUserIdentity.  Após a validação de usuário e senha, você deverá usar o setState para guardar o tipo de usuário que está acessando o sistema;
- Estenda a classe CWebUser.  Você vai usar os métodos desta classe para identificar qual o tipo de acesso que cada usuário terá no seu sistema;
- Para fazer essa checagem dentro do código, use o comando:
Yii::app()->user->checkAccess('admin')
.. para garantir que essa parte do sistema será acessada exclusivamente pelo administrador.  Você vai usar este comando na opção 'visible' dos menus;
- Para evitar que algum usuário consiga acessar determinadas áreas do sistema diretamente via URL, deve ser implementada a segurança nos seus controllers

Assim você consegue algo simples para ser configurado rapidamente.  Para uma abordagem mais completa, sugiro entender como funciona o RBAC completo do Yii, que é bem completa.  Nesta abordagem você controla os acessos usando papéis, tarefas e operações. BEM LEGAL! Recomendo que aprenda esta forma também quando puder, e também a leitura deste material:


Espero ter ajudado.
Almir

bruno da silva santos

unread,
Jun 10, 2015, 8:59:11 AM6/10/15
to yii-framew...@googlegroups.com
Primeiramente lhe agradeço pela atenção..

Após realizar as instruções ele me manda um erro no main.php
<div id="mainmenu">
<?php 
                $user = Yii::app()->user; 
                $this->widget('zii.widgets.CMenu',  array(             
       
                    
                            
                            'items' => array(
                                array('label'=>'CADASTRAR', 'url'=>array('/ManageLevel/admin '), 'visible'=>$user->checkAccess('admin ')),
                                   'items'=>array(
                                array('label'=>'ALUNO', 'url'=>array('/aluno/index')),
                                
                                array('label'=>'ORIENTADOR', 'url'=>array('/orientacao/index')),
                                array('label'=>'TEMA', 'url'=>array('/temas/index')),
                                        
                            )), 

CException

A propriedade "CMenu.0" não está definida.

C:\wamp\www\yii\framework\web\CWidgetFactory.php(161).

se houver algum endereço de email que possa me passar ficarei grato.

o meu e ttu...@hotmail.com ou ttt...@gmail.com

                             

Sidney

unread,
Jun 13, 2015, 12:41:11 PM6/13/15
to yii-framew...@googlegroups.com
Bruno, já faz um tempo que não mexo com yii1, mas o erro está deixando claro que o problema é no CMenu, não no RBAC que o Almir sugeriu. Parece que seus fechamentos de array estão errados nesta linha:

'items' => array(
    array(
        'label'=>'CADASTRAR',
        'url'=>array('...'),
        'visible'=>$us...ess(
'admin ')), // remova este segundo parêntesis
        'items'=>array( // ... para que os subitens fiquem dentro de CADASTRAR
            array('label'=>'ALUNO', 'url'=>array('/aluno/index')),
            array('label'=>'ORIENTADOR', 'url'=>array('/orientacao/index')),
array('label'=>'TEMA', 'url'=>array('/temas/index')),
        )
    )
)
...



Atenciosamente,
Sidney Lins
------

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.
Primeiramente lhe agradeço pela atenção..

Após realizar as instruções ele me manda um erro no main.php
<div id="mainmenu">
<?php 
                $user = Yii::app()->user; 
                $this->widget('zii.widgets.CMenu',  array(             
       
                    
                            
                            'items' => array(
                                array('label'=>'CADASTRAR', 'url'=>array('/ManageLevel/admin '), 'visible'=>$user->checkAccess('admin ')),
                                   'items'=>array(
                                array('label'=>'ALUNO', 'url'=>array('/aluno/index')),
                                
                                array('label'=>'ORIENTADOR', 'url'=>array('/orientacao/index')),
                                array('label'=>'TEMA', 'url'=>array('/temas/index')),
                                        
                            )), 

CException

A propriedade "CMenu.0" não está definida.

C:\wamp\www\yii\framework\web\CWidgetFactory.php(161).

se houver algum endereço de email que possa me passar ficarei grato.

o meu e ttu...@hotmail.com ou ttt...@gmail.com

                             

--
YFB - Yii Framework Brasil
04/2011: Anexos de até 250kb foram autorizados pelos membros da lista. Use com moderação.
---
Você recebeu essa mensagem porque está inscrito no grupo "YFB - Yii Framework Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para yii-framework-br...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/yii-framework-brasil/49c42f7e-5b28-4cd2-925f-0e7018ec2519%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages