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

[gelöst] Node Access in Views umgehen?

Eingetragen von aaki (91)
am 07.07.2010 - 07:55 Uhr in
  • Module
  • Drupal 6.x

Hallo,

ich möchte gern mittels einer View ein bestimmtes Feld eines bestimmten Inhaltstypes auslesen und nur dieses in einer Übersicht darstellen (bspw. ein Datumsfeld in einem Kalender). Der allgemeine Zugriff auf den Node soll verboten sein, da insbesondere auch der Titel, der Textkörper und die anderen Felder Informationen enthalten, die den angemeldeten Nutzern vorbehalten sind.

Wenn ich mit ContentAccess dem Gast das Leserecht dieses Inhaltstyps entziehe, so liefert auch meine View ein leeres Ergebnis. Wie kann ich dies verhindern? Oder muss ich mir selbst behelfen, indem ich in der meintheme_preprocess_node() ein drupal_goto() auf eine "Kein Zugriff"-Seite mache? Wie würdet Ihr das lösen?

Danke für Eure Hilfe
~ aaki

‹ Bilder Gallerie Userpunkte pro Tag limitieren ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi ich kann nicht so 100%

Eingetragen von Kars-T (1473)
am 07.07.2010 - 08:10 Uhr

Hi

ich kann nicht so 100% nachvollziehen, was du erreichen willst, aber schau dir das mal an:

http://stellapower.net/blog/creating-node-view-which-bypasses-access-res...

Viele Grüße,

Kars-T

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, ich würde das mit Views +

Eingetragen von lorden26 (135)
am 12.07.2010 - 00:58 Uhr

Hi, ich würde das mit Views + Pannel lösen. Einen View für das Feld erzeugen und über pannel den View darstellen.

Gruß
Tom

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: Einen View für das

Eingetragen von Exterior (2903)
am 12.07.2010 - 01:45 Uhr
Zitat:

Einen View für das Feld erzeugen und über pannel den View darstellen.

Und wie umgeht man damit dann die Zugriffsrechte? Ô_o

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich bin noch kein

Eingetragen von lorden26 (135)
am 12.07.2010 - 10:37 Uhr

Also ich bin noch kein Experte aber ich hab es eben mal mit einem einzelnem CCK Feld ausprobiert, Mir wird nur das CCK Feld ohne Bearbeiten Link angezeigt. Den Bearbeiten Link kann man aber als Feld hinzufügen.
Der View:
Pfad: node/%/test
Argument: Node Beitrags ID
Feld: CCK-Feld
Filter: Beitrags-ID

Gruß
Tom

  • Anmelden oder Registrieren um Kommentare zu schreiben

Und du hast mittels Content

Eingetragen von Exterior (2903)
am 12.07.2010 - 13:52 Uhr

Und du hast mittels Content Access den Lese-Zugriff auf diesen Node Node verboten und das Panel dann mit einer Benutzerrolle aufgerufen, die per Content Access keine Rechte hat, diesen Node zu sehen?

Denn einfach nur ein einzelnes CCK-Feld eines Nodes in die View zu bringen ist ja kein Problem, es geht ja darum, dass ein User, der den besagten Node *nicht* sehen darf (wegen Zugriffsrechten durch Content Access), trotzdem das CCK-Feld in der View sehen kann. Das heißt, er ruft die View auf und sieht das Feld, aber wenn er den zugehörigen Node direkt aufruft, bekommt er eine Fehler-Seite.

Ist das bei deinem Test gegeben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja

Eingetragen von lorden26 (135)
am 12.07.2010 - 14:11 Uhr

Habs eben nochmal getestet.

bei den Berechtigungen musst Du im Views Modul noch dem Gast access all views geben.
Wobei Du Panels hier nicht mal brauchst. Der View alleine tuts auch.

Gruß
Tom

  • Anmelden oder Registrieren um Kommentare zu schreiben

Und ich habe es auch gerade

Eingetragen von Exterior (2903)
am 12.07.2010 - 15:09 Uhr

Und ich habe es auch gerade getestet und es funktioniert nicht!

Ich habe einen Inhaltstyp genommen und per Content Access alle Zugriffs-Rechte rausgenommen --> niemand darf die Nodes davon sehen.

Dann noch ein CCK-Feld hinzugefügt und einen neuen Node erstellt. Als Admin konnte ich den Node sehen, sonst nicht, so weit, so gut.

Jetzt eine View erstellt, den Filter auf diesen neuen Inhaltstyp gelegt und als einziges Feld in der View das neue CCK-Feld eingefügt. Außerdem noch schnell eine Seitenansicht mit Pfad erstellt. Zugriff auf die View ist unbeschränkt, wurde zuvor auch extra nochmal getestet (habe den Node-Titel von öffentlichen Nodes ausgeben lassen)

Als Admin den Pfad aufgerufen --> ich bekomme das Feld ausgegeben.

Ausgeloggt und als Gast den Pfad aufgerufen --> ich bekomme gar nichts ausgegeben

Wer keine Zugriffsrechte auf die Nodes hat, kann auch nicht einfach die Felder dieser Nodes in Views sehen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich stimme Dir zu das wenn

Eingetragen von lorden26 (135)
am 12.07.2010 - 16:43 Uhr

Ich stimme Dir zu das wenn alle Berechtigungen rausgenommen sind man als Gast nichts sehen kann.

Die Frage aber habe ich so verstanden, dass ein Feld von einer Node gesehen werden soll, aber nicht bearbeitet werden darf. Insofern kann die Berechtigung View für dieses Feld gesetzt werden und man erhält in der neuen Seitenansicht das Feld ausgegeben ohne den Bearbeiten Link und ohne den Rest der Node auch wenn man nur Gast ist

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe erst nach meiner

Eingetragen von lorden26 (135)
am 12.07.2010 - 16:49 Uhr

Ich habe erst nach meiner Antwort bemerkt das Du von Content Acces geschrieben hast. Ich benutze das Content permission Modul und kann da die View Berechtigung für einzelne Felder setzten.
Gruß
Tom

  • Anmelden oder Registrieren um Kommentare zu schreiben

lorden26 schrieb Ich habe

Eingetragen von aaki (91)
am 12.07.2010 - 17:21 Uhr
lorden26 schrieb

Ich habe erst nach meiner Antwort bemerkt das Du von Content Acces geschrieben hast. Ich benutze das Content permission Modul und kann da die View Berechtigung für einzelne Felder setzten.
Gruß
Tom

Hallo,

das ist leider keine Lösung, zumindest nicht in meinem Sinn:

Zitat:

CCK Field Permissions does not prevent Drupal's search engine from indexing content that a user might not have access to.

Und außerdem soll der ganze Node dem Gast nicht zur Verfügung stehen. Nur innerhalb der View soll ein Feld in diesem Node (alle Werte dieses Feldes über alle Nodes diese Inhaltstyps) ausgegeben werden.

Idealer Weise wären die Berechtigungen nochmals unterteilt in View/Node/Teaser, sprich man könnte die Rechte so bestimmen, dass Gäste zwar Nodes in der Teaser-Ansicht sehen dürften, nicht aber die volle Ansicht. Bzw. in diesem Fall, dass Nodes in Views gelistet werden könnnen (Ansicht verwendet Felder), nicht aber in der Vollansicht (und bestenfalls auch nicht durch die Suche).

Laut meiner Recherche und dem wie oben beschriebenen Fall gibt es so keine fertige Lösung. Daher werde ich es wie folgt machen:
Die Rechte auf dem relevanten Inhaltstyp frei für alle belassen und mittels der template-preprocess Funktionen entscheiden, ob drupal_access_denied() aufgerufen werden soll. Sollte meine Seite eine Suche haben (hat sie nicht), müsste über ein extra Modul selektiert werden, welche Inhaltstypen indexiert werden und welche nicht. Dieses gibt es auch, nur weiss ich gerade nicht, wie dieses heißt.

Viele Grüße
~ aaki

  • Anmelden oder Registrieren um Kommentare zu schreiben

lorden26 schrieb Die Frage

Eingetragen von aaki (91)
am 12.07.2010 - 17:27 Uhr
lorden26 schrieb

Die Frage aber habe ich so verstanden, dass ein Feld von einer Node gesehen werden soll, aber nicht bearbeitet werden darf.

Nein, Node darf nicht angezeigt, nicht indexiert werden. Nur innerhalb einer Ansicht (Views2) soll ein Feld der Nodes ausgelesen werden und dargestellt werden. Eben zum Beispiel ein Datumsfeld, um in einem Kalender aufzuzeigen, dass an diese Tage schon "belegt" sind oder aber dass es an diesen Tagen ein Ereignis gab. Aber die Infos zu dem Ereignis (Node) bleiben dem Gast verborgen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Exterio hat recht es funktioniert doch nicht

Eingetragen von lorden26 (135)
am 12.07.2010 - 17:35 Uhr

Ich habe meinen Fehler bemerkt. Hatte Inhalt lesen noch für Gäste gesetzt und dann konnten die doch den ganzen Inhalt sehen. Sorry

  • Anmelden oder Registrieren um Kommentare zu schreiben

Content Permission ist wieder

Eingetragen von Exterior (2903)
am 12.07.2010 - 17:38 Uhr

Content Permission ist wieder was völlig anderes, das hat ja nichts mit den Zugriffsrechten auf den Node an sich zu tun, sondern da wird geregelt, wer bestimmte CCK-Felder sehen/bearbeiten darf und wer nicht. Damit kannst du aber z.B. nicht verhindern, dass jemand den Node-Titel oder Body angezeigt bekommt usw.

Zitat:

ich möchte gern mittels einer View ein bestimmtes Feld eines bestimmten Inhaltstypes auslesen und nur dieses in einer Übersicht darstellen. Der allgemeine Zugriff auf den Node soll verboten sein,

Es geht also darum, dass der komplette Node an sich nicht eingesehen werden darf, aber ein bestimmtes Feld trotzdem in Views angezeigt werden soll. Das Problem ist nur, dass man Felder in Views nicht sehen kann, wenn man den Node nicht sehen darf.

@aaki

Das ist jetzt zwar nur eine Idee, aber vielleicht würde es als Möglichkeit für dich in Betracht kommen:

Man setzt in Content Access die Zugriffsrechte so, dass alle Rollen, die das Feld sehen sollen, den Node lesen dürfen.

Damit können die Rollen das Feld in Views sehen.

Nun erstellt man eine extra node-inhaltstyp.tpl.php und verändert sie so, dass der Inhalt nur ausgegeben wird, wenn die User-ID 1 ist. Also z.B. so:

//Aus dem hier:

<?php print $content; ?>

//machen wir sowas:

<?php if ($user->uid == 1)
                {
                  print
$content;
                }
              else
                {
                  print
'Sie haben keine Zugriffsberechtigung für diese Seite.';
                 
drupal_set_title('Zugriff verweigert');
                }  
?>

Oder so ähnlich.

  • Anmelden oder Registrieren um Kommentare zu schreiben

So ähnlich mache ich es ja :)

Eingetragen von aaki (91)
am 12.07.2010 - 18:09 Uhr

...nur ein wenig anders und für meinen Fall übersichtlicher. Statt eines eigenen Node-Templates überprüfe ich die Rolle des Nutzers direkt in der template.php (THEMENAME_preprocess_node()) und rufe, falls er es nicht sehen darf direkt drupal_access_denied() auf. So erspare ich mir dann auch das Formatieren dieser 404 Seite, indem ich auf die vorhandene umleite. Außerdem werden somit auch die unberechtigten Zugriffe geloggt.

Vielen Dank dennoch!

Liebe Grüße
~ aaki

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, ich habe zu lange an dem

Eingetragen von Exterior (2903)
am 12.07.2010 - 18:15 Uhr

Ja, ich habe zu lange an dem Beitrag geschrieben und hatte da deinen neuen noch nicht gelesen, hatte schon den neuen Beitrag angefangen, als du den noch nicht gesendet hattest ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt auch einfacher!

Eingetragen von aaki (91)
am 07.08.2010 - 09:59 Uhr

Nun gibt es ein Plugin, das genau diesen Fall abdeckt:
Views Ignore Node Permissions

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Schriftgröße standard einstellen
  • PHP 8.1 - Deprecated function: rtrim()
  • Drupal Website gestalten
  • MariaDB 10.6
  • Entity Reference - Title Felder werden als Link angezeigt
  • Tokens werden in Viev als Link angezeigt
  • [bug entdeckt & workaround gefunden] benutzerdefinierte Felder vom Userprofil tauchen ungefragt auch in den Forumtopics auf...
  • [gelöst] Mass contact Empfängerliste nach Taxonomy Term statt Rolle
  • Update V. 9.3.12 auf V. 9.4 mit Fehler: Modul mySQL fehlt. Bitte Hilfe.
  • Sprachpfad, in Drupal Korrekt einstellen, auch bei den Meta-Tags
  • Update von Drupal 9.3 auf 9.4 oder bei 9.3 bleiben
  • Terminverwaltung
Weiter

Neue Kommentare

  • core_version_requirement: ^8
    vor 2 Stunden 49 Minuten
  • core_version_requirement: ^8
    vor 2 Stunden 51 Minuten
  • ok. Wenn ich das mache
    vor 2 Stunden 57 Minuten
  • Bei gleichem Namen hat das
    vor 3 Stunden 30 Minuten
  • Sorry, dass ich mich hier
    vor 3 Stunden 42 Minuten
  • Habe Patch versucht
    vor 10 Stunden 40 Minuten
  • Hier wird ein Patsch
    vor 12 Stunden 30 Minuten
  • Mit Drupal geht das um 150
    vor 23 Stunden 40 Minuten
  • Ah, ok. Wenn es ein Paragraph
    vor 1 Tag 23 Stunden
  • Also kleiner Nachtrag noch:
    vor 2 Tagen 38 Minuten

Statistik

Beiträge im Forum: 247863
Registrierte User: 19590

Neue User:

  • Tkakah
  • JeraldFub
  • andycrestodina

» Alle User anzeigen

User nach Punkten sortiert:
wla9213
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 8 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