Domanda

Drupal 6.x

Ho questo modulo che gestisce quattro diversi tipi di contenuto. Del resto, come faccio a definire il permesso per ogni contenuto all'interno dello stesso modulo? È anche possibile? Io non riesco a capire come definire il permesso per ogni tipo di contenuto cuz hook_perm deve essere nominato con il nome del modulo e non ha alcun argomento (come $ node hook_access) per tornare base di autorizzazione per il tipo di contenuto. Ecco come mi piacerebbe fare -

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',
);
.......
}

Qualsiasi aiuto sarebbe molto apprezzato.

È stato utile?

Soluzione

In genere non è necessario per creare le autorizzazioni per i tipi di contenuto da soli, in quanto il modulo nodo fa questo per voi in node_perm() . Per ogni tipo di contenuto si dichiara in hook_node_info() , il modulo nodo creerà automaticamente un fisso insieme di permessi come segue:

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

Oltre a questo, si può dichiarare un qualsiasi numero di autorizzazioni aggiuntive nell'implementazione dei moduli hook_perm() (fintanto che sono unici) e usare quelli nel codice come si desidera.

La cosa importante qui è che un permesso non fa molto per sé - è solo un nome che verrà visualizzato nella pagina delle autorizzazioni, permettendo così di essere attribuito a ruoli. Diventano 'significativa' solo dal codice che le utilizza tramite user_access() chiamate.

Quindi, se, per esempio, si voleva creare una speciale, nuova autorizzazione per ognuno dei vostri tipi di contenuto da soli, si sarebbe solo li dichiarare hook_perm() tutti in una volta (in modo che non è necessario alcun argomento - solo tornare una corda per autorizzazione che si desidera creare).

Altri suggerimenti

In generale, un modulo di esecuzione più di un tipo di contenuto restituirà tutti i permessi esso definite da hook_perm(); Non c'è un modo per sapere con che tipo di contenuto Drupal sta chiedendo i permessi implementate.
Drupal chiede sempre ai moduli l'elenco di tutte le autorizzazioni implementate, che non poteva anche essere correlati a nodi; ci sono alcuni moduli che implementano solo le autorizzazioni per le loro pagine di impostazione, per esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top