Views - Nodes nach Benutzerrolle ausfiltern

am 09.07.2013 - 17:23 Uhr in
Hi Leute :)
ich habe einen Inhaltstypen 'Artikel' und viele Benutzerollen. Der Einfachheit halber reduziere ich es zur Erklärung mal auf 2, aber um der Frage vorweg zu greifen: Es sind so viele Benutzerrollen, dass es nicht gewünscht ist für jede Artikel/Benutzerrollenkombi einen Inhaltstypen zu erstellen. Mal angenommen die zwei Benutzerrollen sind eben einfach 'Gast' und 'Authentifizierter Benutzer'.
Ich habe Content Access per Node aktiviert und gebe für jeden Artikel an, für wen dieser zu sehen ist.Es gibt Beiträge, welche sowohl für Gäste, als auch für Athentifizierte Benutzer freigeschaltet sind. Ich möchte Sie aber örtlich trennen. Das heißt ich möchte einen View, der alle Artikel ausschließt, welche für Gäste freigeschaltet sind und einen View der alle Artikel ausschließt, welche nur für Authentifizierte Benutzer freigeschaltet sind. Kann ich das mit dem Viewsmodul verwirklichen?
Viele Grüße
Martin
- Anmelden oder Registrieren um Kommentare zu schreiben
Das Untermodul Views_Perm aus
am 10.07.2013 - 21:01 Uhr
Das Untermodul Views_Perm aus https://drupal.org/project/views_hacks könnte Dir evtl.helfen
Content Access hat keine
am 11.07.2013 - 00:16 Uhr
Content Access hat keine Views Integration. Wenn das überhaupt mit Views funktionieren kann, dann nur in Verbindung mit Rules.
Was ist denn mit dem zuvor
am 11.07.2013 - 08:21 Uhr
Was ist denn mit dem zuvor angesprochenen Views Hack? Hört sic hdoch vom Ansatz her nicht schlecht an? In der Beschreibung steht "Exposes permission information to Views". Hört sich doch so an, als ob es die Permissions des Nodes irgendwie dem Views Modul zur Verfügung stellt. Dann muss ich nur noch abgleichen - oder was spricht dagegen?
Und wie würde der Ansatz mti Rules so in etwa aussehen @glycid ?
Martin P. schrieb Hört sich
am 11.07.2013 - 09:35 Uhr
Hört sich doch so an, als ob es die Permissions des Nodes irgendwie dem Views Modul zur Verfügung stellt. Dann muss ich nur noch abgleichen - oder was spricht dagegen?
Ohne entsprechende Integration von Content Access glaube ich nicht. Aber was hindert dich daran, es einfach mal auszuprobieren?
Und wie würde der Ansatz mti Rules so in etwa aussehen @glycid ?
Da Content Access in Rules gut integriert ist (wenn Content Access Rules Integration aktiviert ist), liegt der Gedanke doch nahe, eine, bzw. zwei entsprechende Regeln zu erstellen, die jeweils in der View geladen werden. Das wird sicherlich ein wenig kompliziert, sollte aber funktionieren. Einen Leitfaden kann ich dir hier nicht an die Hand geben, da ich einen solchen Fall noch nicht hatte. Probiere es halt aus!
Nichts spricht gegen das
am 11.07.2013 - 09:52 Uhr
Nichts spricht gegen das auprobieren. Ich habe das entsprechende Modul installiert und das Teilmodul aktiviert, aber ich finde im View keine neuen Einstellungsmöglichkeiten :D Habe schon eine Supportanfrage gestellt.
Zuvor hatte ich es mit Taxonomy Terms gelöst, welche ich zur Auswahl gestellt habe im Content Type. Da widerum war das Problem, dass ich zwar wunderbar die Views filtern konnte, aber die Eigentliche Zugangsberechtigung war nicht geregelt. D.h. ich hatte zwar gefilterte Views, aber die Inhalte waren nicht wirklich Zugangsgeschützt für unberechtigte Rollen. Und doppelte Pflege in Form von Taxnonomy und Content Access wäre zu aufwendig. Ich bleibe am Ball :)
Unter Seiteneinstellungen /
am 11.07.2013 - 11:37 Uhr
Unter Seiteneinstellungen / Zugriff: gibt es Einstellungsmöglichkeiten zum Zugriff per Rolle, siehe Bild:
Hi Sammelzwerg, das hast du
am 11.07.2013 - 11:56 Uhr
Hi Sammelzwerg, das hast du glaube ich falsch verstanden. Ich will nicht den Zugriff beschränken, das ist schon erledigt und alles wie es sein soll.
Ich will, dass der View zum Beispiel alle Nodes ausgibt, die Leserecht für Gäste haben, nicht aber die, die Leserecht für authentifizierte Benutzer haben.
Oh ja, das habe ich
am 11.07.2013 - 16:28 Uhr
Oh ja, das habe ich tatsächlich falsch verstanden, entschuldige die Fehlinfo. Vielleicht ist dann https://drupal.org/project/views_php etwas für Dich, damit kannst Du PHP-Code zum filtern verwenden, und vielleicht die Rollen dadurch ausfiltern und dann für jede Rolle einen eigenen View bauen.
Hmm, vielleicht ist das
am 11.07.2013 - 20:54 Uhr
Hmm, vielleicht ist das problem nicht ganz erkennbar. Ich mache das Beispiel mal etwas realistischer:
Rollen:
Gast
Ordentliches Mitglied
Alle Artikel haben den gleichen Inhaltstypus. Manche haben Gast, sind damit für alle sichtbar, manche haben Ordentlichen Mitglied, sind also nur für die sichtbar.
Es gibt eine Startseite, da sollen alle für Gäste gefiltert werden (also alle Artikel die für Gäste [und somit ja auch für alle anderen] lesbar sind). Nicht aber angezeigt werden, sollen die Beiträge, die für Ordentliche Mitglieder zugänglich sind, obwohl die ja vom gleichen Inhaltstypen sind. Denn die widerum möchte ich auf einer anderen Seite ausgeben. Auf dieser Seite widerum sollen die für Gäste nicht angezeigt werden. Ehrlich wüsste ich nicht mal ansatzweise wie ich das mit diesem Modul aufbauen könnte. Zudem ist es eine Entwicklungsversion und die Lösung müsste stabil laufen.
Ich habe mir das hier jetzt
am 12.07.2013 - 05:28 Uhr
Ich habe mir das hier jetzt nachgebaut, mit Content Access und 2 Beispielartikeln. Artikel 1 ist für Gäste lesbar, Artikel 2 nur für angemeldete User. Dann gibt es 2 Views, einmal mit Zugriff Rolle Gast, und einmal mit Zugriff angemeldeter User. Jeder View hat seinen eigenen Menüpunkt, so können Gäste und angemeldete User jeweils nur den sehen, der für sie ist. Auf dem Bild links für angemeldete, und rechts als Gast.
Wie ist das bei Dir mit den Nodes, die Gäste sehen dürfen, sind die dann mittels Content Access auch für angemeldete freigegeben, oder nur für die Gäste?
Ah, jetzt weißt du genau
am 12.07.2013 - 08:15 Uhr
Ah, jetzt weißt du genau worum es geht. Die Artikel die Gäste sehen dürfen, dürfen natürlich auch Angemeldete sehen. Aber eben trotzdem nur auf der Startseite.
Der eine View ist bei mir auf der allgemeinen Startseite und der andere View ist auf einer Seite, die eine extra Startseite für angemeldete ist. Das heißt ein Angemeldeter hat sowohl Zugriff auf die Startseite und kann somit alle öffentlichen artikel dort sehen und soll dann aber auf der spezifischen Startseite nur die Artikel sehen, die für seinen Benutzerstatus freigeschaltet sind. Da sollen dann die öffentlichen Artikel eben nicht nochmal drin erscheinen, auch wenn er Zugriff darauf hat.
Hi Leute, also ich habe es
am 12.07.2013 - 12:43 Uhr
Hi Leute,
also ich habe es jetzt anders gemacht, da ich ja nicht drum herum komme: Ich habe jetzt ein Vokabular erstellt, welches als Begriffe alle Benutzerrollen hat. Dieses Vokabular habe ich dann beim erstellen eines Nodes als Checkbox Liste. So habe ich sowohl den wirklichen Inhaltsschutz über Content Access per Node, als auch die Filterung über das Vokabular.
Nachteil: Am Ende muss zwei mal der gleich "rotz" eingepflegt werden, einmal auf der Registerkarte Inhalt und einmal auf der Registerkarte Content Access. Das ist leider relativ umständlich und nicht benutzerfreundlich.
Was es mir zeigt, ist, dass eben manchmal auch relativ einfache Dinge nicht einfach abzubilden sind in Drupal :(