it-swarm.com.de

Wie kann ein Benutzer nur auf einen bestimmten Knoten und nicht auf alle Knoten dieses Typs zugreifen?

Ich habe einen Benutzer mit Ansichts- und Bearbeitungsrechten für einen bestimmten Inhaltstyp. Dies gibt allen Benutzern die Berechtigung, alle Knoten dieses Typs anzuzeigen und zu bearbeiten. Eigentlich möchte ich für jeden Benutzer einen eindeutigen Knoten erstellen, damit nur dieser Benutzer ihn anzeigen und bearbeiten kann. Wie kann ich das in Drupal 7?

10
Ek Kosmos

Mit einem vorhandenen Modul können Sie dies mit Content Access tun, mit dem (zusammen verwendet ACL ) die Berechtigungen auf festgelegt werden können Zugriff auf einen Knoten für jeden Benutzer.
Dies bedeutet, dass Sie die Zugriffsberechtigungen für jeden Knoten manuell festlegen müssen.

Wenn Sie die Knoten manuell erstellen und dann sicherstellen möchten, dass nur der Benutzer, der als Eigentümer des Knotens festgelegt ist, ihn anzeigen (und bearbeiten) kann, können Sie ein benutzerdefiniertes Modul erstellen (dh ein Modul) verwendet für Ihre Site) und implementieren Sie hook_node_access() wie folgt (der Code wurde geschrieben, um das Lesen zu erleichtern):

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;
}

Mit dieser Hook-Implementierung müssen Sie die Zugriffsberechtigungen für jeden Knoten des von Ihnen erstellten Inhaltstyps nicht manuell bearbeiten. Das Ändern des Besitzers des Knotens wäre auch einfacher, da Sie die Zugriffsberechtigungen dieses Knotens nicht ändern müssen. Der Code gewährt dem Benutzer, der als Eigentümer (oder Autor) des Knotens festgelegt ist, automatisch die Aktualisierungs- und Ansichtsberechtigungen.

11
kiamlaluno

Sie benötigen dazu kein spezielles Modul oder benutzerdefinierten Code. Erstellen Sie einfach manuell diese Knoten, legen Sie die entsprechenden Benutzer als Eigentümer (Autor) der Knoten fest und legen Sie die Berechtigungen für diesen Inhaltstyp fest, um nur den eigenen Inhalt zu bearbeiten (keine Inhalte dieses Typs zu bearbeiten), und fertig.

5
Petr Svehla

Sie sprechen von Drupal Knotenzugriffskontrolle, was ein großes Thema ist.

Die integrierte Unterstützung des Kerns für die Knotenzugriffskontrolle ist eher selbstverständlich. Um den Zugriff zu steuern und einen Knoten nach Rollen anzuzeigen, müssen Sie eine Art Knotenzugriffskontrollmodul verwenden. Es gibt eine Seite auf Drupal.org, auf der alle Knotenzugriffsmodule aufgelistet sind mit jeweils einer Kapselüberprüfung. Ich schlage vor, dass Sie sich diese Seite ansehen, um zu sehen, ob Sie ein geeignetes Modul zur Zugriffssteuerung finden.

Das Modul Flexi Access scheint das Modul zu sein, das Ihren Anforderungen am nächsten kommt, da seine Hauptfunktion darin besteht, zu lassen Sie steuern den Zugriff für einzelne Benutzer und nicht nach Rolle oder Taxonomiebegriff.

Es ist ein kleines Modul, mit dem Sie ACLs (Zugriffssteuerungslisten) für einzelne Benutzer einrichten können. Es ist im Grunde eine Benutzeroberfläche für das Modul ACL , daher müssen Sie diese ebenfalls installieren.

Es fehlen einige der Funktionen der erweiterten Zugriffssteuerungsmodule, z. B. Content Access , aber es wird aktiv gewartet und es gibt derzeit keine offenen Fehler in der Problemwarteschlange.

Offenlegung: Ich bin der Betreuer von Flexi Access.

1
Free Radical