Eu tenho algumas permissões que gostaria de atribuir a algumas funções programaticamente para facilitar a instalação.
Como estou instalando o módulo e criando permissões e funções, não tenho os IDs das funções, onde desejo definir as permissões. Até agora, encontrei apenas maneiras de atribuir funções programaticamente que precisam do ID da função.
Gostaria de saber se, de alguma forma, poderia procurar as funções com seu nome (string), recuperar o ID da função e depois atribuir permissão. Apenas não parece certo.
Respostas:
O módulo Features faz isso muito bem, permitindo exportar funções e permissões (e muitas outras coisas) de uma só vez:
http://drupal.org/project/features
Mas se você deseja criar seu próprio check-out API de permissões:
http://drupal.org/project/permissions_api
fonte
O recurso é bastante útil para coisas como esta. No entanto, se você precisar criar funções e adicionar permissões programaticamente, não precisará pesquisar o banco de dados por conta própria.
Quando você cria uma nova função de usuário
user_role_save()
, ele atualiza o objeto que você transmitiu com o novo ID de função de usuário atribuído. Você pode ver um exemplo disso nastandard_install()
função no perfil de instalação padrão.Este exemplo mostra que você pode criar uma nova função de usuário e acessar sua
rid
propriedade, que foi preenchida poruser_role_save()
. Também mostra como adicionar permissões a essa funçãouser_role_grant_permissions()
. Nesse caso, está concedendo à função 'administrador' todas as permissões disponíveis.Se você precisar obter o ID de uma função de usuário criada por outra pessoa, poderá usar
user_role_load_by_name()
para obter o objeto para essa função de usuário. Então você apenas pega o id com$role->rid
.fonte
user_role_grant_permissions()
Eu gostaria de adicionar um exemplo de código mais próximo da pergunta original sobre como atribuir permissões a funções existentes programaticamente.
Você pode procurar as funções com o nome delas, recuperar o ID da função e atribuir permissões da seguinte maneira (por exemplo, em uma implementação de hook_update):
fonte