Como posso verificar se um usuário tem uma determinada função?
Achei isso, mas é para o Drupal 6.
Como você já encontrou essa postagem , leia também os comentários. Explica claramente por que é recomendável verificar uma permissão em vez de verificar uma função. Ao usar permissões, você pode atribuir essa permissão a várias funções, o que torna seu sistema mais flexível. Além disso, lembre-se de que as funções podem ser renomeadas, o que quebraria seu código.
Dito isto, se você deseja verificar uma função, pode fazer o seguinte:
// Load the currently logged in user.
global $user;
// Check if the user has the 'editor' role.
if (in_array('editor', $user->roles)) {
// do fancy stuff
}
Para verificar se o usuário atual tem uma única função ou várias funções, uma ótima maneira é:
fonte
Atualização para a versão Drupal> = 7.36
Você pode usar a função user_has_role na API Drupal https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_has_role/7 .
Tente este exemplo:
fonte
Você pode instalar o módulo devel e fazer o dpm ($ user). Isso imprimirá uma matriz com todas as informações do usuário, incluindo a função do usuário.
Nessa matriz, você pode encontrar a posição da matriz de "funções" e usá-la em seu módulo para encontrar a função do usuário.
fonte
Para ser à prova de futuro, caso o nome da função mude, é melhor verificar o ID da função (rid) que pode ser encontrado na tabela de funções no banco de dados.
Se você deseja procurar uma função com o número 16, faça:
fonte
Aqui está o código real do comentário mencionado na resposta aceita como a melhor prática
fonte
Você pode verificar o papel de um usuário imprimindo ($ user) e, na saída, obterá algo como isto
fonte
para verificar se um usuário tem uma determinada função:
fonte
fonte
As respostas acima não funcionaram, não tenho certeza, encontrei este post e o código deve ser `
// Verifique se $ user tem a função de administrador. if (in_array ('administrador', array_values ($ usuário-> funções))) {// Faça alguma coisa. }?> `
fonte