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

Nodes ohne view-Berechtigung ausblenden

Eingetragen von sewid (21)
am 16.08.2009 - 17:43 Uhr in
  • Modul-Entwicklung

Hallo Forum,

ich bin derzeit dabei ein eigenes Modul zu erstellen, das einen eigenen Content-Typ mit sich bringt. Den Zugriff auf Nodes von diesem Typ reglementiere ich über eine Implementierung von hook_access(). In der Node-Übersicht ("/node") werden jedoch jedem Besucher alle Nodes angezeigt, auch die, auf die er keinen Zugriff hat. Wenn er ein entsprechendes Node dann anklickt kommt die typische "Kein Zugriff"-Meldung. Wie erreiche ich aber, dass die Nodes garnicht erst angezeigt werden, wenn dafür keine Berechtigung da ist?

Und ergänzend hierzu: Wie schaffe ich es, dass solche Nodes auch in der Suche nicht angezeigt werden?

Vielen Dank im Voraus und viele Grüße
Sebastian

‹ hook_form_alter[gelöst] [gelöst] Formular, das die Ergebnisse auf der selben Seite anzeigt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Implementiere hook_node_access_records und hook_node_grants

Eingetragen von traxer (1009)
am 16.08.2009 - 21:48 Uhr

Implementiere hook_node_access_records und hook_node_grants.

Wenn Drupal eine Liste von Nodes aus der Datenbank haben will, dann wird die Datenbankabfrage mittels db_rewrite_sql umgeschrieben, indem hook_db_rewrite_sql ausgeführt wird. Eine Implementierung dieses Hooks ist node_db_rewrite_sql, welche dafür sorgt, das die Zugriffsrechte, die du in hook_node_access_records vergeben hast, beachtet werden.

Es wäre dann konsequent, deine Implementierung von hook_access wegzuwerfen, da du sonst zwei Mechanismen verwendest, Zugriffe zu regeln. Wenn diese Mechanismen das gleiche Ergebniss haben, dann ist einer überflüssig, wenn sie unterschiedliche Ergebnisse liefern dann kommt es zu genau den Ungereimtheiten, die du gerade erlebst. Alternativ könntest du deine eigene Impolementierung von hook_db_rewrite_sql anbieten.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi! Vielen Dank für die

Eingetragen von sewid (21)
am 17.08.2009 - 15:39 Uhr

Hi!

Vielen Dank für die schnelle Antwort, so ganz hilft sie mir leider noch nicht.
Folgendes Problem: Ich habe einen Content Type "MeinTyp". MeinTyp hat neben den normalen Feldern "title" und "body" zwei weitere Felder: "is_public" und "access_token". Jetzt hätte ich gerne folgendes: Wenn das Feld: "is_public" gesetzt ist, dann soll jeder die Nodes von eben diesem Typ sehen können. Wenn is_public = 0 ist, dann soll das Node nur sichtbar sein, wenn der Access Token an die URL angehängt wird.

Mit Hilfe von hook_node_access_records($node) kann ich ja die verschiedenen Berechtigungen für jedes Node definieren. Mit hook_node_grants($account, $op) sage ich dann, was der Benutzer darf und was nicht. Jetzt hängt mein Access Token ja aber am Node dran und unter hook_node_grants($account, $op) komme ich ja nicht an mein Node dran. Könnte ich da einfach ein realm mit meinem Token erstellen und bei hook_node_grands eben diesen Realm übergeben? Funktionieren tut es, die Frage ist nur: Ist das ein schöner Weg oder gibt es einen schöneren? :-)

Und noch ein Problem: Wenn ich ein Node aktualisiere und beispielsweise is_public von 0 auf 1 ändere, dann hat in hook_node_access_records($node) das Node den Wert nicht. Wenn ich per node_load($node->nid) mein Node nachlade, dann bekomme ich den alten Wert. Ich schreibe und aktualisiere mein Node über hook_insert() und hook_update(), da man hook_nodeapi() ja nur bei "modulfremden" Content Types nutzen soll. Im Beispiel wird jedoch hook_nodeapi() genutzt, um insert und update abzudecken. Auch hier die Frage: Muss ich hook_nodeapi() nutzen oder geht das irgendwie besser?

Ich hoffe, das Problem ist irgendwie verständlich und von mir nicht zu kompliziert beschrieben.

Vielen Dank und viele Grüße
Sebastian

  • 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 15 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 12 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» 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 20 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