Erros de acesso negado após a instalação do SUPEE-6285
85
Após instalar o patch SUPEE-6285 em nossa loja Magento 1.7.0.2, o sistema mostra um erro " Acesso negado " ao tentar acessar todos os módulos personalizados para usuários que possuem permissões seletivas (nem todas). Captura de tela abaixo.
As permissões do usuário estão definidas corretamente em Recursos da função e reaplicamos as configurações de permissão para garantir que elas sejam definidas.
O problema foi reproduzido em várias extensões personalizadas, portanto, não é apenas uma única extensão que não está funcionando.
Efetuei logoff / logoff, limpei o cache e confirmei que o compilador está desabilitado.
Se você usar contas de administrador restritas, alguns menus de extensões de terceiros poderão não funcionar mais para elas. O motivo é que o valor de retorno padrão de Mage_Adminhtml_Controller_Action::_isAllowed()foi alterado de truepara Mage::getSingleton('admin/session')->isAllowed('admin'). Extensões que não substituem esse método em seus controladores administrativos porque não usam a ACL, agora precisam do privilégio "ALL" .
A única solução é corrigir as extensões e adicionar esse método a todos os seus controladores administrativos:
protectedfunction _isAllowed(){returntrue;}
Ou se eles realmente tiverem um recurso ACL definido em etc/adminhtml.xml:
Pegue os nomes dos nós abaixo acl/resources/admin/children, pulando os seguintes children.
Como criar identificadores de recursos ausentes
Se houver apenas uma <menu>definição, mas nenhuma <acl>definição, você também poderá definir sua própria (ela não precisa estar no mesmo módulo, portanto, nenhum arquivo de terceiros precisa ser modificado) ::
Copie tudo abaixo menuao acl/resources/admin/childrene remover os <action>nós.
Ele lida com a maioria das _isAllowed()chamadas perdidas muito bem, mas resulta em código quebrado com arquivos de origem ofuscados ou criptografados, portanto, você ainda deve verificar os resultados manualmente.
Acabei de testar esta solução e conceder a permissão "Painel" não faz diferença. O "privilégio do painel" é o mesmo que a permissão "Painel" em Recursos da função ou está em outro lugar?
22420 Chris
2
Atualizada a resposta, interpretei mal a configuração admin, na verdade, ela só retorna verdadeira para usuários com todos os privilégios.
Fabian Schmengler
3
Por favor, não faça apenas return true;se não houver nada definido para a ACL no seu config.xmlou adminhtml.xml. Em vez disso, adicione as permissões ao arquivo xml e verifique-o corretamente. Dê uma olhada no site de Alan Storm ou aqui para obter informações sobre como criar permissões.
kel
Está funcionando bem para o módulo personalizado, mas se houver seção para definição de configuração, como podemos dar acesso a esse bloco?
Mjdevloper 13/07/2015
11
Controladores para rotas configuradas com <use>admin</use>. Eles geralmente se estendem Mage_Adminhtml_Controller_Action.
Fabian Schmengler
2
No meu caso para módulos de terceiros, a adição do código abaixo aos adminhtml controllers funcionou:
Nesse caso, ele retorna as configurações de ACL do Magento. Eu estou apenas querendo saber se o Magento Core Team irá corrigi-lo com outro patch ou isso deve ser feito em app / code / local como uma correção global ...
Este não é o comportamento pretendido. Eles tornaram os controladores administrativos restritivos por padrão de propósito. Na verdade, os fornecedores de extensão são obrigados a atualizar agora.
Fabian Schmengler
11
Portanto, sim, se isso funcionar para você, corrija-o app/code/local, mas mostrando extensões personalizadas sem ACL, se e somente se o usuário tiver permissões, System > Configurationnão é o que todos desejariam.
Fabian Schmengler
Sua solução é uma solução alternativa e não é recomendada! Você pode retornar true por padrão (como era no controlador administrativo antes deste patch). A melhor solução: configure suas listas de controle de acesso corretamente.
admin
, na verdade, ela só retorna verdadeira para usuários com todos os privilégios.return true;
se não houver nada definido para a ACL no seuconfig.xml
ouadminhtml.xml
. Em vez disso, adicione as permissões ao arquivo xml e verifique-o corretamente. Dê uma olhada no site de Alan Storm ou aqui para obter informações sobre como criar permissões.<use>admin</use>
. Eles geralmente se estendemMage_Adminhtml_Controller_Action
.No meu caso para módulos de terceiros, a adição do código abaixo aos adminhtml controllers funcionou:
fonte
Deveria ser:
Nesse caso, ele retorna as configurações de ACL do Magento. Eu estou apenas querendo saber se o Magento Core Team irá corrigi-lo com outro patch ou isso deve ser feito em app / code / local como uma correção global ...
fonte
app/code/local
, mas mostrando extensões personalizadas sem ACL, se e somente se o usuário tiver permissões,System > Configuration
não é o que todos desejariam.