Como depurar permissões no Drupal 7?
Uso relatórios principais, logs de erros, logs de erros do módulo de desenvolvimento, backtrace e bloqueio de permissão de acesso ao nó, mas às vezes não é suficiente. O que mais devo verificar para descobrir por que certos campos, visualizações ou blocos não estão sendo exibidos para um usuário?
Também descobri que existe um módulo para o Drupal 6 para relatar permissões chamado, mas ele não está disponível para o Drupal 7.
Estou usando vários módulos de terceiros relacionados à permissão:
- devel node access 7.x-1.x-dev
- fast permissions administration 7.x-2.0
- organic groups access control 7.x-1.x
- profile2 group access 7.x-1.x-dev
- ur-node access 7.x-1.x-dev
Respostas:
Uma maneira de fazer é criar um módulo personalizado, imprimir informações de acesso em todas as páginas, todos os nós, todos os blocos.
A função menu_get_item () retorna um item do roteador que possui a propriedade access_arguments para a página atual.
Em seguida, você pode hook_page_alter, para exibir as informações de acesso na parte superior de cada página.
Em seguida, você pode exibir as informações de permissão de bloqueio assim:
E assim por diante, basicamente o mesmo conceito, você pode fazer o mesmo para nó, formulário, visualizações. Espero que isto ajude.
fonte
yourmodule_get_page_access()
não fazem sentido, você pode dar uma olhada$router_item['access_callback']
e procurar a função com esse nome nos módulos relevantes para analisar o que está acontecendo lá. Ótima resposta.Edite o arquivo principal do módulo Usuário; encontre a
user_access()
função, adicione 2 linhas antes dareturn
instrução e monitore o log de erros do PHP.fonte
error_log
não sai para a tela. Para minha instalação, ele escreveu no log de erros do apache. php.net/manual/en/function.error-log.phpParece que você já possui todas as ferramentas baseadas em GUI para solucionar problemas de permissões. Um truque mais avançado (e provavelmente mais difícil) que usei efetivamente no passado é:
Em muitos casos, as consultas que o Views expõe são bastante complexas (choque cheio de junções) e construí-las manualmente levaria um pouco mais de tempo (além disso, seria um pouco mais propenso a erros). Além disso, essa abordagem garante que você esteja testando o que o usuário está vendo. Se você tiver algum módulo de permissão ativado (que faça uso das permissões principais do Drupal), suas junções de tabela aparecerão na consulta usada pelo Views. Depois de obter essa consulta, eu a ajusto para mostrar quantos nós do tipo de conteúdo x são permitidos para a função x, por exemplo. É o mais preciso e refinado possível nos relatórios. E esses são meus relatórios "avançados".
fonte
Com o Drupal, tenho que usar um depurador algumas vezes (xdebug com netbeans). Muitas funções são chamadas indiretamente, tornando quase impossível seguir o que realmente se acrescenta globalmente apenas lendo o código, imprimindo um retorno ou verificando a saída final.
fonte