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

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe einen Benutzer mit Ansicht und Bearbeitung von Rechten an einem bestimmten Inhaltstyp. Dies gibt allen Benutzern das Privileg, alle Knoten dieses Typs anzuzeigen und zu bearbeiten. Tatsächlich 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 machen?

War es hilfreich?

Lösung

Mit einem vorhandenen Modul können Sie dies mit tun Inhaltszugriff, was (wenn zusammen verwendet ACL) Ermöglicht das Festlegen der Berechtigungen, um für jeden Benutzer auf einen Knoten zuzugreifen.
Dies bedeutet, dass Sie die Zugriffsberechtigungen für jeden Knoten manuell einstellen 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 verwendet für Ihre Website) und implementieren hook_node_access() wie folgt (der Code wurde geschrieben, um das Lesen leichter zu machen):

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 für jeden Knoten dieses von Ihnen erstellten Inhaltstyps angegebenen Zugriffsberechtigungen nicht manuell bearbeiten. Das Ändern des Eigentümers des Knotens wäre ebenfalls einfacher, da Sie die Zugriffsberechtigungen dieses Knotens nicht ändern müssen. Der Code würde dem Benutzer, der als Eigentümer (oder Autor) des Knotens festgelegt wird, automatisch die Aktualisierungs- und Ansichtsberechtigungen gewährt.

Andere Tipps

Zu diesem Zweck benötigen Sie kein spezielles Modul oder einen benutzerdefinierten Code. Erstellen Sie einfach manuelle diese Knoten, setzen Sie die geeigneten Benutzer als Eigentümer (Autor) der Knoten und setzen Sie Berechtigungen für diesen Inhaltsyp, um den eigenen Inhalt nur zu bearbeiten (keine Inhalte dieses Typs bearbeiten), und Sie sind fertig.

Was Sie sprechen, ist Drupal Node Access Control, was ein großes Thema ist.

Die integrierte Unterstützung des Kerns für den Knotenzugriffskontrolle ist eher Kurs. Um den Zugriff auf einen Knoten für die Rolle anzusehen, müssen Sie eine Art Knoten-Zugriffskontrollmodul verwenden. Da ist ein Seite unter Drupal.org Auflistung aller Knotenzugriffsmodule, mit einer Kapselprüfung von jedem. Ich schlage vor, Sie sehen sich diese Seite an, um festzustellen, ob Sie ein geeignetes Modul für den Zugriff finden können.

Das Flexi -Zugang Das Modul scheint das Modul zu sein, das den am engsten entspricht Ihren Anforderungen entspricht, wie es es ist Primärfunktion Sie können den Zugriff für einzelne Benutzer und nicht durch Rolle oder durch Taxonomie kontrollieren.

Es handelt sich um ein kleines Modul, mit dem Sie ACLs (Zugriffskontrolllisten) für einzelne Benutzer einrichten können. Es ist im Grunde eine Benutzeroberfläche für die ACL Modul, also müssen Sie das auch installieren.

Es fehlen einige Funktionen der fortschrittlicheren Zugriffskontrollmodule, wie z. Inhaltszugriff, aber es wird aktiv gepflegt und es gibt derzeit keine offenen Fehler in seiner Problemwanne.

Offenlegung: Ich bin der Betreuer des Flexi -Zugangs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top