Os módulos criados a partir do admin-generator estão protegidos por default.
No entanto, pode por vezes haver necessidade em desproteger uma determinada acção. Para tal, o ideal seria editar o generator.yml e o security.yml como se faz num módulo não-admin-generated.. Mas o facto é que isso não funciona porque em todos os módulos do admin generator há uma pre-execução de uma função que força a que o utilizador tenha credenciais de administrador:
public function preExecute() { $this->configuration = new moduleGeneratorConfiguration(); if (!$this->getUser()->hasCredential($this->configuration->getCredentials($this->getActionName()))) { $this->forward(sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action')); } // ... }
Hack possível para solucionar este problema
No actions.class.php do módulo, colar a função do preExecute das autoActions (semelhante à função acima) e desproteger as acções pretendidas. Exemplo:
public function preExecute() { $this->configuration = new oemproGeneratorConfiguration(); $action = $this->getActionName(); if ($action == 'accaoNumeroUm' || $action == 'accaoNumeroDois') { } else { if (!$this->getUser()->hasCredential($this->configuration->getCredentials($this->getActionName()))) { $this->forward(sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action')); } } // ... }
Confesso que não é a solução mais bonita, mas pelo menos funciona :)