Drupal criando permissões para seus módulos hook_perm()
Criar permissões no drupal, para seus módulos é simples, basta implementar a função hook_perm(), e utilizar depois nos items do menu, ou algumas funções do drupal que nos ajuda na tarefa.
Implementando o hook_perm():
1 2 3 4 | function meumodulo_perm() { return array('meu modulo access', 'meu modulo view all'); //Criamos duas permissões, "meu modulo access" e "meu modulo view all" } |
Com isso já criamos 2 permissões, para usar agora temos algumas opções, no hook_menu do último post conhecemos o parâmetro dos items o ‘access arguments’, com ele é possível passar 1 array, com as permissões para acessar determinado item, vamos a um exemplo:
1 2 3 4 5 6 7 8 9 10 | $items['admin/novo_item/delete'] = array( 'title' => 'Delete Titulo', //Título que vai aparecer 'description' => 'A descrição de nosso Item', //Descrição de nosso Item 'page callback' => 'minhafuncao_page', //A função que iremos chamar 'page arguments' => array('edit'), //Parametros que desejamos passar para nossa função 'file' => 'meumodulo.module', //O arquivo onde está sua função 'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item 'type' => MENU_CALLBACK, //Definimos que o item vai ser acessado apenas por URL ou seja por links na página não no menu ); |
Acima definimos que para acessar o delete de 1 item, temos que ter a permissão meu “modulo access”.
Algumas outras funções que podem nos ajudar no desenvolvimento, para restringir acessos são:
- user_access()
- Checa se o usuário tem acesso a determinada função, como parâmetros recebe uma string com as permissões entre vírgulas, e pode receber também o id do usuário, porém sendo o segundo não obrigatório, caso não passado a função pega o usuário ativo no momento.
- drupal_access_denied()
- Gera uma página de erro 403, indicando assim que o usuário não está, habilitado para acesso a URL, em conjunto com a user_access(), onde verificamos se o usuário tem acesso, é uma boa maneira de indicar que o usuário não tem acesso a determina “feature”.
Existem algumas outras funções, que podem ajudar quanto as permissões, assim como módulos, vale dar uma olhada na documentação do drupal, assim como, nos projetos.