user_access ($ string, $ account = NULL)
$ string: a permissão, como "administrar nós", está sendo verificada.
Como posso descobrir uma lista dos valores de string $ disponíveis para a user_access()
função?
Desde que todos os módulos possam definir suas próprias permissões, não há uma lista "estrita" dessas strings. Você precisará "construí-lo" se realmente precisar dessa lista programaticamente.
Você pode executar este script em uma página / devel / php. (Obviamente, você precisa do módulo Devel .)
// Render role/permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
print_r($module);
// Drupal 6
// if ($permissions = module_invoke($module, 'perm')) {
// print_r($permissions);
// }
// Drupal 7
if ($permissions = module_invoke($module, 'permission')) {
print_r($permissions);
}
}
Como o @Berdir disse, a maneira mais fácil de ver quais permissões estão disponíveis é acessar as permissões admin / people / permissions no Drupal 7.
O problema com o qual eu continuava me deparando é que nunca consegui descobrir qual sequência eu precisava fornecer como um 'argumento de acesso' para realmente usar a permissão. Bem, aqui está como você encontra o nome da string para as permissões que deseja usar (este exemplo usa o Google Chrome.)
Passo um. Vá para admin / people / Permissions, encontre a permissão que você gostaria de usar e clique com o botão direito do mouse em uma caixa de seleção à direita da permissão que você gostaria de usar. Selecione 'Inspecionar elemento' ou apenas vá ver a fonte.
Em seguida, procure o valor da caixa de seleção e observe o valor. (Nesse caso, a sequência é 'criar conteúdo do cupom')
Essa é a string que você precisa fornecer como argumento de acesso em hook_menu ()
Código de exemplo: (itens não relevantes removidos, não se esqueça do título, retorno de chamada etc. em hook_menu ())
function fsrsys_menu() {
$items = array();
$items['my-custom-url'] = array(
'access callback' => 'user_access',
'access arguments' => array('create coupon content'),
);
return $items;
}
Aqui está uma versão D7 da resposta do Haza, modificada para usar o DSM em vez de print_r e deixar de fora os módulos que não implementam hook_permission:
// Render permission overview:
$options = array();
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
if ($permissions = module_invoke($module, 'permission')) {
// List only the modules that have permissions.
dsm($module);
dsm($permissions);
}
}
Você pode usar a user_permission_get_modules()
função, que retorna uma matriz de todas as permissões definidas e seus módulos.
Determine os módulos aos quais as permissões pertencem.
Valor de retorno
Uma matriz associativa no formato $ permission => $ module.
array_keys()
obviamente obterá apenas as informações solicitadas. Em seguida, você também pode usar o resultado emuser_role_grant_permissions
, por exemplo, para conceder todas as permissões à função de administrador:user_role_grant_permissions(variable_get("user_admin_role"), array_keys(user_permission_get_modules()));
A maneira mais fácil é verificar a página de permissão (D7: admin / pessoas / permissões, D6: admin / usuário / permissões). Observe que você usa diretamente a seqüência de caracteres exibida no Drupal 6; para 7, você precisa dar uma olhada no nome / valor da caixa de seleção. Isso ocorre porque as permissões agora têm um título e uma descrição traduzidos no Drupal 7.
Portanto, se você deseja o nome da permissão "Visualizar conteúdo publicado" no Drupal 7, o valor é "acessar conteúdo", que é o seu nome de permissão.
Se você souber de qual módulo a permissão é proveniente, também poderá verificar a implementação hook_perm () (D6) / hook_pemission () (D7) correspondente desse módulo.
Em muitos casos, você deseja definir suas próprias permissões e usá-las. Você pode fazer isso com os ganchos acima.
fonte
Usando o módulo Devel
Após instalar e ativar o módulo Devel , navegue para
admin/config/development/devel
. Há uma configuração intitulada "Exibir nomes de máquinas de permissões e módulos". Verifique se está marcado.Agora, na página de permissões em
people/permissions
, passe o mouse sobre o nome da permissão que você está questionando. Pode demorar um ou dois segundos, mas o valor da string será exibido.fonte
Aqui está um simples formulário de alteração que adicionará a chave de permissão ao nome na página de permissões. Isso deve facilitar a procura. Você precisará adicioná-lo a um módulo personalizado e substituir "mymodule" pelo nome desse módulo.
fonte
Eu criei esse snippet JavaScript que me ajuda com isso. Eu testei no Drupal 7 apenas no tema Shiny .
Basicamente, gera o nome da máquina, retirado da primeira caixa de seleção desse nome, para a primeira célula, sob o rótulo. O script depende do jQuery, que não deve ser um problema no Drupal 7.
Normalmente colo-o no console das Ferramentas do desenvolvedor e o executo a partir daí. Eu posso criar um bookmarklet para ele no futuro.
fonte
fonte
Este é um módulo simples para facilitar: Lista de argumentos de acesso
Saudações
fonte
basta inserir um módulo, você verá as permissões da máquina em / admin / people / Permissions
Saudações
fonte