DaRkShAfT 0 Denunciar post Postado Maio 10, 2011 Oi, Estou dando em doido! :angry: Eu estou tentando criar o Zend_Acl dinâmico, ou seja, a partir de resources guardados no banco. No entanto estou com um problema por causa do Zend_Navigation, vou dar um exemplo do código que estou a produzir: navigation.xml <?xml version="1.0" encoding="UTF-8"?> <configdata> <nav> <settings> <label>Configurações</label> <menu>sideNav</menu> <uri>#</uri> <resource>settings</resource> <pages> <sitesettings> <label>Site</label> <module>admin</module> <controller>settings</controller> <action>site</action> <resource>site:settings</resource> </sitesettings> <adminsettings> <label>Admin</label> <module>admin</module> <controller>settings</controller> <action>admin</action> <resource>admin:settings</resource> </adminsettings> </pages> </settings> </nav> </configdata> está correcto assim? agora no meu acl eu vou declarar o seguinte: $this->addRole( new Zend_Acl_Role( 'admin') ); $this->add( new Zend_Acl_Resource( 'settings' ) ); $this->add( new Zend_Acl_Resource( 'site' ), 'settings' ); $this->add( new Zend_Acl_Resource( 'admin' ), 'settings' ); // Até aqui está tudo ok? Eu penso que sim... Eu estou a colocar resource no site e admin porque eu em muitos casos vou ter mais dependências... $this->allow( 'admin', 'settings' ); // Aqui começa o meu problema! Atenção o problema não está no acesso ao resources, aqui consoante os acessos que eu dou, é onde o user admin consegue aceder... O problema está quando faço o echo $this->navigation()->menu()->render(), neste caso ele funciona e apresenta-me o menu correcto, no entanto se eu acrescentar isto ao código: $this->allow( 'admin', 'settings', 'site' ); // Aqui começa o meu problema! ele supostamente era para apresentar: <ul> <li>Configurações <ul> <li>Site</li> </ul> </li> </ul> e ele não me apresenta nada! no entanto se não colocar o param 'site', ele apresenta tudo! <ul> <li>Configurações <ul> <li>Site</li> <li>Admin</li> </ul> </li> </ul> Conclusão, eu consigo criar regras para os utilizadores, no entanto no zend_navigation não consigo fazer com que essas regras sejam obedecidas na totalidade... Se eu quiser dar autorização total para Configurações, o zend_navigation corre 100%, no entanto seu eu der somente autorização para Configurações>Site, o zend_navigation não me mostra o menu Configurações! Supostamente não era para mostrar o menu Configurações só com a opção Site? Preciso mm de uma grande ajuda!! [] Compartilhar este post Link para o post Compartilhar em outros sites
DaRkShAfT 0 Denunciar post Postado Maio 10, 2011 Oi, Já resolvi o problema!! Tinha um erro no código, e acho que já estou a compreender melhor os resources/privileges! :joia: Agora precisava era de uma idéia... Eu queria fazer um mapa(tree view) com checkboxs para dar acesso a um determinado utilizador. No entanto queria discutir a melhor forma de guardar essa info num campo da tabela users(acl_resources), para depois ler e atribuir os acessos quando o user faz login! Alguém me ajuda? ;) Oi, Já resolvi o problema!! Tinha um erro no código, e acho que já estou a compreender melhor os resources/privileges! :joia: Agora precisava era de uma idéia... Eu queria fazer um mapa(tree view) com checkboxs para dar acesso a um determinado utilizador. No entanto queria discutir a melhor forma de guardar essa info num campo da tabela users(acl_resources), para depois ler e atribuir os acessos quando o user faz login! Alguém me ajuda? ;) Nem mais, guardar tudo num array multi-dimensional e serializar o mesmo para guardar na bd! :joia: Compartilhar este post Link para o post Compartilhar em outros sites
tonweb 0 Denunciar post Postado Janeiro 17, 2012 Tô com a mesma dúvida :( Compartilhar este post Link para o post Compartilhar em outros sites
Tiare Balbi Bonamini 2 Denunciar post Postado Janeiro 23, 2012 Você primeiro deve realizar toda a configuração do Zend_Acl e no navigation você deve somente inserir as regras após configurado. $acl = new Zend_Acl(); $this->view->acl = $acl; Out................ //Dentro da View $this->navigation()->setAcl($this->acl); Ou //Bootstrap $view->navigation()->setAcl($acl); Ou //Controller $this->view->navigation()->setAcl($acl); Esqueci do Exemplo: //Bootstrap protected function _initNavigation() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $navConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); $navigation = new Zend_Navigation($navConfig); $view->navigation($navigation)->setAcl($this->_acl) ->setRole($this->_auth->getStorage()->read()->role); } Compartilhar este post Link para o post Compartilhar em outros sites