¿Cómo puede un usuario el acceso sólo un nodo específico, y no todos los nodos de ese tipo?

drupal.stackexchange https://drupal.stackexchange.com/questions/905

  •  16-10-2019
  •  | 
  •  

Pregunta

Tengo un usuario con derechos de visualización y edición a un tipo de contenido específico. Esto da el privilegio de todos los usuarios para ver y editar todos los nodos de ese tipo. Pero, en realidad, quiero crear para cada usuario un nodo único, por lo que sólo ese usuario puede ver y editar la misma. ¿Cómo puedo hacer esto en Drupal 7?

¿Fue útil?

Solución

El uso de un módulo existente, se puede hacer eso con de acceso al contenido, que (cuando se usa junto ACL ) permite establecer los permisos para acceder a un nodo para cada usuario.
Esto significa que se necesitan para establecer los permisos de acceso de forma manual para cada nodo.

Si crea manualmente los nodos, y entonces usted quiere estar seguro de que sólo el usuario que se establece como propietario del nodo es capaz de ver (y editar), entonces usted puede crear un módulo personalizado (lo que significa una módulo que se utiliza para su sitio), y aplicar hook_node_access() de la siguiente manera (el código ha sido escrito para que sea más fácil de leer):

function mymodule_node_access($node, $op, $account) {
  // We are interested to existing objects. When the node is being created, Drupal passed the node type instead of the node object. 
  if (is_object($node)) {
    $bool = (
      ($node->type == 'the node type you need to check') && 
      (($op == 'view') || ($op == 'update'))
    );
    if ($bool) {
      if ($account->uid == $node->uid) {
        return NODE_ACCESS_ALLOW;
      }
      else {
        return NODE_ACCESS_DENY;
      }
    }
  }

  return NODE_ACCESS_IGNORE;
}

El uso de esta aplicación de gancho, que no es necesario editar manualmente los permisos de acceso dadas para cada nodo de ese tipo de contenido se crea. Cambiar el propietario del nodo también sería más fácil, ya que no es necesario cambiar los permisos de acceso de ese nodo; el código concedería automáticamente los permisos de actualización y vista al conjunto de usuario como propietario (o autor) del nodo.

Otros consejos

Usted no necesita ningún código especial módulo o la costumbre de hacer esto. Basta con crear manualy esos nodos, usuarios apropiados establecidos como propietario (autor) de los nodos y establecer permisos a este contentype para editar el contenido propio (no editar cualquier contenido de este tipo) y ya está.

Lo que estamos hablando es el control de acceso del nodo de Drupal, que es un tema muy amplio.

El núcleo está construido con soporte para control de acceso del nodo es bastante claro, y para controlar el acceso a ver un nodo de papel, debe utilizar algún tipo de módulo de control de acceso al nodo. Hay una página de en Drupal.org lista de todos los accesos nodo de módulos , con una revisión de cada cápsula. Le sugiero que eche un vistazo a esa página para ver si se puede encontrar un módulo adecuado para el control de acceso.

El módulo Flexi acceso parece ser el módulo que más se parezca a sus necesidades, ya que su función principal es para que pueda controlar el acceso de usuarios individuales, en lugar de papel o por término de taxonomía.

Es un pequeño módulo que le permiten configurar ACL (listas de control de acceso) para los usuarios individuales. Se trata básicamente de una interfaz de usuario para el ACL módulo, por lo que necesita para instalar eso también.

Se carece de algunas de las características de los módulos de control de acceso más avanzados, tales como contenido Acceso , pero se mantiene activa y hay bichos Actualmente hay abiertos en su cola de emisión.

Divulgación:. Soy el encargado del mantenimiento de Flexi de acceso

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