Pregunta

Drupal 6.x

Tengo este módulo que maneja cuatro tipos de contenido diferentes. Por lo demás, ¿Cómo definir el permiso para cada contenido dentro del mismo módulo? Es eso posible? No puedo encontrar la manera de definir el permiso para cada tipo de contenido primo hook_perm tiene que ser identificado con el nombre del módulo y que no tiene ningún argumento (como nodo $ hook_access) para devolver el permiso de base en el tipo de contenido. Así es como me gustaría hacer -

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

Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

Normalmente no es necesario para crear permisos para usted mismo tipos de contenido, como el módulo de nodo hace por usted en node_perm() . Para cada tipo de contenido se declara en hook_node_info() , el módulo de nodo creará automáticamente un fijo conjunto de permisos como sigue:

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

Además de eso, se puede declarar cualquier número de permisos adicionales en la implementación de módulos hook_perm() (siempre y cuando que son únicos) y utilizar los de su código como desee.

Lo importante aquí es que un permiso no hace mucho por sí mismo - es sólo un nombre que se mostrará en la página de permisos, lo que le permite ser atribuido a las funciones. Solamente se convierten en 'significativa' de código que utiliza ellos a través de user_access() llamadas.

Así que si, por ejemplo, desea crear un especial, nueva autorización para cada uno de los tipos de contenido usted mismo, usted acaba de declarar en hook_perm() todos a la vez (por lo que no es necesario ningún argumento - sólo volver una cuerda por el permiso desea crear).

Otros consejos

En términos generales, un módulo de aplicación de más de un tipo de contenido devolverá todos los permisos que se definen a partir de hook_perm(); no hay una manera de saber con qué tipo de contenidos Drupal está pidiendo los permisos implementados.
Drupal siempre pide a los módulos de la lista de todos los permisos aplicadas, que no podrían incluso estar relacionados con nodos; hay algunos módulos que implementan sólo permisos para sus páginas de ajuste, por ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top