Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Zugriff auf Node

Eingetragen von TobiasR (134)
am 04.09.2009 - 18:35 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hallo,

ich möchte ein Modul erstellen, mit dem ich den Zugriff auf bestimmte Nodes regulieren kann.

Stehe aber gerade ein wenig auf dem Schlauch, da ich nicht weiß an welchem Hook ich ansetzen soll. Ich hatte folgende Idee:

function modulname_node_access($op, $node, $account)
{
  if ($node->type == 'xxx') //hier kommt noch eine Bedingung für den user hin
    {
        switch($op)
        {
            case 'update':
              return true;
            ...
        }
    }
}

Leider funktioniert das so nicht. Setze ich am falschen Hook an oder mache ich da in der Funktion was falsch?

Viele Grüße,
Tobias

‹ [gelöst] PHP :: usort - Sortierung behalten [gelöst]Zugriff verweigert trotz 'access arguments'=>array('access content') ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Selbst ist der Mann

Eingetragen von Nicolai Schwarz (1071)
am 04.09.2009 - 19:03 Uhr

Natürlich kannst du das selbst programmieren.

Oder du schaust dir Node Access an, das vermutlich schon genau das macht, was du brauchst.
Und falls Node Access dir doch nichts bringt, kannst du dir da zumindest abschauen, wie die es programmiert haben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, das Node_Access-Modul

Eingetragen von TobiasR (134)
am 07.09.2009 - 00:11 Uhr

Hallo, das Node_Access-Modul ist nicht ganz das was ich suche. Eventuell bekomme ich das Problem mit ein paar anderen Node-Access-Modulen hin.

Trotzdem würde ich gerne verstehen, wie Drupal den Zugriff auf Nodes regelt. Insbesondere die Funktionsweise von hook_node_grants() und hook_node_access_records(), da man damit den Zugriff wohl wesentlich flexibler gestalten kann, als mit hook_access() und hook_perm().

Hier meine aktuelle Auffassung wie diese beiden Hooks funktionieren:

  • hook_node_access_records($node):
  • Erstellt in der Tabelle "node_access" Zugriffseinträge für jeden Node. Dort wird eine Grant-ID (also eine Rechte-ID) ein realm (also ein Bereich, z.B. Modulname, etc.) und verschiedene Zugriffe(view, update, delete). Es können pro Node also mehrere Einträge mit verschiedenen Grant-IDs und realms vorhanden sein.

  • hook_node_grants($account, $op):
  • Dieser Hook gibt ein Array mit Bereichen (die realms aus der Tabelle "node_access") als Schlüssel und Rechten (Grant-IDs) als Schlüssel wieder.

Ist das so richtig wiedergegeben? Würde mich über ein Feedback freuen, wenn's so richtig ist, oder verbessert wird, würde ich das ganze noch ein wenig ausarbeiten und ins HAndbuch übernehmen.

Viele Grüße,
Tobias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat:ich möchte ein Modul

Eingetragen von quiptime (4972)
am 07.09.2009 - 00:38 Uhr

Zitat:
ich möchte ein Modul erstellen, mit dem ich den Zugriff auf bestimmte Nodes regulieren kann

Willst Du das Fahrad noch mal erfinden?
 
Ein solches Modul existiert bereits. Es heisst "Content Access" und kann mit dem Modul "ACL" erweitert werden.
 


 

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Willst Du das Fahrad

Eingetragen von TobiasR (134)
am 07.09.2009 - 00:53 Uhr
Zitat:

Willst Du das Fahrad noch mal erfinden?

Nein! Das möchte ich nicht. Mir ist klar, dass man möglichst immer auf schon vorhandene Module zurückgriefen sollte. Vielleicht schildere ich meine Anliegen etwas genauer. Habe lange gesucht, ob ich dies mit Standard-Modulen abdecken kann bin aber momentan noch der Meinung das es nicht möglich ist:
Ich möchte Nodes erstellen, die insgesamt über 4 Ebenen (Hierachie) verfügen. Diese Nodes werden jeweils von der nächst höheren Ebene erstellt und müssen von allen höheren Ebenen bearbeitbar/löschbar sein. Welcher User auf Nodes welcher Ebene Zugriff hat, löse ich z.Z. über ein CCK-Userreference-Feld (wofür es auch ein Access-Modul gibt). Für das Problem der Zugriffs auf eine tiefere Ebene (über mehrere Ebenen und mit verschiedenen Rechten) habe ich noch kein Modul gefunden.

Daher habe ich mich mit den Hooks aus dem Drupal-Kern beschäftigt. Ich habe auch schon eine Idee, ie ich dies damit umsetzen kann, jedoch habe ich dies noch nicht umgesetzt, weil ich ein Feedback haben wollte, ob ich die Funktionen so richtig verstanden habe.

Tobias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast Du meinen Post, Willst

Eingetragen von quiptime (4972)
am 07.09.2009 - 10:03 Uhr

Hast Du meinen Post, Willst Du das Fahrad noch mal erfinden?, ueberhaupt erfasst?

Das Modul heisst "Content Access" und nicht "Node Access".

Hast Du dieses Modul und seine Moeglichkeiten ueberhaupt getestet?

Um die einzelnen Hierachie-Stufen getrennt mit Rechten versehen zu koennen koennte man jede Hierachie-Stufe mit einem eigenen Nodetype erstellen.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Natürlich habe ich diesen

Eingetragen von TobiasR (134)
am 07.09.2009 - 10:50 Uhr

Natürlich habe ich diesen Post gelesen. Getestet habe ich es nicht, ich habe mich auf die Beschreibung von drupal.org verlassen und bin zu dem Schluss gekommen, dass auch dieses Modul(wie viele andere) nicht das tut, was ich gerne hätte.

Auf der anderen Seite habe ich auch die Motivation mich genauer mit den Hooks des Drupal-Kerns auseinander zu setzen, da ein gewisses Grundverständnis in der Modulentwicklung sicher nicht schadet.

Daher möchte ich die "Fertige Module"-Diskussion hiermit beenden (mein Beitrag war bewusst im Forum "Modul-Entwicklung" und nicht in "Modul-Suche" eingestellt) und würde mich immer noch zu Rückmeldungen meiner Verständnisfragen freuen.

Viele Grüße,
Tobias

  • Anmelden oder Registrieren um Kommentare zu schreiben

TobiasR schrieb Hier meine

Eingetragen von traxer (1009)
am 07.09.2009 - 11:10 Uhr
TobiasR schrieb

Hier meine aktuelle Auffassung wie diese beiden Hooks funktionieren: ...

Ist soweit richtig. Zu bemerken ist noch

  • Module sollten die Datenbanktabelle normalerweise nicht direkt manipulieren, da die Tabelle manchmal von Drupal geleert und anhand von hook_node_access_records neu aufgebaut wird.
  • Du kannst mit dem System keine Rechte entziehen, sondern nur hinzufügen.
  • Die Ergebnisse von hook_node_grants wandern direkt in eine(!) Datenbankabfrage, die jedes mal ausgeführt wird, wenn der Zugriff auf einen Node geprüft werden soll. Da ist es etwas unpraktisch, 20000 Datensätze zurückzuliefern. Den Parameter $op zu beachten ist technisch nicht notwendig, hilft aber dabei, die Anzahl der Datensätze zu reduzieren.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 6 Tagen
  • Hey danke
    vor 3 Wochen 7 Stunden
  • Update: jetzt gibt's ein
    vor 3 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 4 Wochen 2 Tagen
  • In der entsprechenden View
    vor 4 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 4 Wochen 2 Tagen
  • gelöst
    vor 6 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 7 Wochen 7 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20463

Neue User:

  • Znogsnernoimb
  • ByteScrapers
  • Mroppoofpaync

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 17 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association