Pergunta

Drupal 6.x.

Eu tenho este módulo que gerencia quatro tipos diferentes de conteúdo. Por falar nisso, como defino permissão para cada conteúdo dentro do mesmo módulo? É mesmo possível? Não consigo descobrir como definir a permissão para cada tipo de conteúdo, porque o gancho_perm deve ser nomeado com o nome do módulo e ele não tem nenhum argumento (como Hook_Access $ Node) para retornar a base de permissão no tipo de conteúdo. Veja como eu gostaria de fazer -

function mymodule_perm() 
{
if(content1)    
return array(
    'create content1 node',
    'edit content1 nodes',
    'delete content1 nodes',
);
if(content2)    
return array(
    'create content2 node',
    'edit content2 nodes',
    'delete content2 nodes',
);
if(content3)    
return array(
    'create content3 node',
    'edit content3 nodes',
    'delete content3 nodes',
);
.......
}

Qualquer ajuda seria muito apreciada.

Foi útil?

Solução

Normalmente você não precisa criar permissões para os tipos de conteúdo, pois o módulo do nó faz isso por você em node_perm(). Para cada tipo de conteúdo que você declarar em hook_node_info(), o módulo do nó criará automaticamente um conjunto fixo de permissões da seguinte maneira:

  $perms[] = 'create '. $name .' content';
  $perms[] = 'delete own '. $name .' content';
  $perms[] = 'delete any '. $name .' content';
  $perms[] = 'edit own '. $name .' content';
  $perms[] = 'edit any '. $name .' content';

Além disso, você pode declarar qualquer número de permissões adicionais em seus módulos hook_perm() implementação (desde que forem únicos) e use os do seu código como desejar.

O importante aqui é que uma permissão não faz muito por si só - é apenas um nome que aparecerá na página de permissões, permitindo que ela seja atribuída a funções. Eles só se tornam "significativos" por código que os usa via user_access() chamadas.

Portanto, se, por exemplo, você quisesse criar uma nova permissão especial para cada um de seus tipos de conteúdo, você apenas os declararia em hook_perm() de uma só vez (para que você não precise de nenhum argumento - basta retornar uma string por permissão que deseja criar).

Outras dicas

De um modo geral, um módulo implementando mais de um tipo de conteúdo retornará todas as permissões que define de hook_perm(); Não há uma maneira de saber qual o tipo de conteúdo Drupal está perguntando às permissões implementadas.
O Drupal sempre pede aos módulos a lista de todas as permissões implementadas, que nem podiam estar relacionadas a nós; Existem alguns módulos que implementam apenas permissões para suas páginas de configuração, por exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top