Zugriffsbeschränkungen für Nodes - eine Übersicht der Möglichkeiten
Zugriffsbeschränkungen für Nodes nach bestimmten Kriterien
Für viele ein interessantes und mitunter auch wichtiges Thema.
Nicht jeder User soll auf der Seite alle Beiträge sehen dürfen. Manche Beiträge sind nur für bestimmte Benutzerrollen gedacht. Oder gar nur für einzelne User. Oder Benutzerrolle A soll bestimmte Nodes nur lesen dürfen, Rolle B soll lesen und bearbeiten und Rolle C lesen, bearbeiten und löschen dürfen. Oder Benutzer dürfen Inhalte erstellen, aber eigene Beiträge nicht mehr löschen bzw. editieren.
Manchmal hat man auch etwas komplexere Vorstellungen, dass zum Beispiel nur der Autor eines Nodes A sowie der Autor eines referenzierten Nodes B Leserechte für Node A haben usw. usf.
Die Anwendungsmöglichkeiten für Zugriffsbeschränkungen sind vielfältig, die Anwendungsfälle breit gefächert und der Bedarf nach solchen Beschränkungen ist häufig gegeben, allerdings sind die Core-Möglichkeiten von Drupal diesbezüglich nur mit einigen Grundfunktionen ausgestattet.
Daher befasst sich diese Handbuchseite inkl. ihrer Unterseiten mit den verschiedenen Möglichkeiten, Zugriffbeschränkungen zu verwenden. Welche Module man verwenden und was man mit ihnen anstellen kann, könnt ihr hier nachlesen.
Sollte jemandem noch ein Anwendungsfall einfallen, so kann er gerne diese Handbuchseite ergänzen. Bei Fragen zu den Lösungen oder Nachfragen, wie man ein bestimmtes Problem angehen könnte, sowie Thema-Vorschlägen könnt ihr gerne einen Kommentar hinterlassen und ich werde sehen, ob ich helfen kann ;-)
Viel Spaß
mfg Exterior
- Anmelden oder Registrieren um Kommentare zu schreiben
Super Überblick über die
am 23.07.2010 - 09:13 Uhr
Super Überblick über die verschiedenen Möglichkeiten und auch prima geschrieben! Die Seiten habe ich leider erst jetzt richtig wahrgenommen, sonst hätte ich das schon eher auf die Startseite gesetzt. Habe ich aber jetzt nachgeholt! :)
Freut mich, wenn die Arbeit
am 24.07.2010 - 21:53 Uhr
Freut mich, wenn die Arbeit gefällt ;)
Schöne Übersicht...
am 27.07.2010 - 15:03 Uhr
Ich selbst verwende für Zugriffsrechte i.d.R. Taxonomy Access Control Lite, damit habe ich eine strukturierte und modellierbare Zugriffsberechtigung.
Vorteil: Zugriffsberechtigungen werden quasi wie ein Objekt definiert, dem Rollen und einzelne Benutzer zugewiesen werden. Nodes können jetzt durch die Zuweisung von Begriffen aus dem Vokabular diesen Zugriffsberechtigungen unterworfen werden.
Damit lässt sich auch ein formalisiertes Berechtigungssystem nach dem RBAC-Modell aufbauen, das sogar auditierbar ist.
Ich habe fuer die
am 27.07.2010 - 16:28 Uhr
Ich habe fuer die Zugriffskontrolle auf einzelne Inhalte bisher auch eher zu Taxonomy Access Control tendiert.
Was mich interessieren wuerde: Gibt es Szenarien/Beispiele fuer die eine Zugriffskontrolle auf einzelne Inhalte durch Taxonomy abzulehnen ist zugunsten eines Systems wie von Exterior auf Praktischer - dynamische rollebasierte Zugriffe beschrieben?
Drupal maßgeschneidert.
Interessant, das Modul kannte
am 27.07.2010 - 18:33 Uhr
Interessant, das Modul kannte ich noch gar nicht. Tja, man lernt nie aus :)
Ich habe immer mit Content Access und Co. gearbeitet, daher wäre ein Grund höchstens "persönliche Vorlieben", aber mir fallen da spontan keine großen Vor- oder Nachteile ein.
Man könnte als Nachteil "meiner Methode" evtl. anführen, dass sie länger benötigt, bis sie eingerichtet ist. Aber wenn man sich mit den entsprechenden Modulen auskennt (und ich benutze eben Rules sehr oft usw.), dann geht das auch sehr flott von der Hand.
Vorteil ist dafür, dass man Views für die Ausgabe der Rollen verwenden kann, ist vielleicht manchmal auch ganz praktisch.
Und was mir spontan noch einfällt:
Bei Taxonomy Access Control werden die "Zugriffsrechte" als Taxonomy-Terms hinzugefügt.
Wenn man nun z.B. in einer node.tpl.php die Taxonomy-Terms eines Nodes auslesen und verarbeiten will, so wie hier:
<?php
foreach($node->taxonomy as $key => $value)
{
//Code
}
?>
Dann könnte man ein wenig Probleme bekommen, denn die Access-Terms will man vermutlich nicht mit auswerten und müsste sie alle einzeln ausschließen, was evtl. umständlich werden könnte und man müsste diese Funktion dann anpassen, falls sich die Access-Terms mal ändern (z.B. zwei Rollen heraus genommen werden und eine neue dazu kommt). In solch einem Fall wäre TAC evtl. nicht ganz so praktisch.
Aber insgesamt ein schönes Modul, werde ich mir mal näher anschauen.
Was mir aber noch einfällt: Ich bin z.B. bei vielen Inhaltstypen darauf angewiesen, dass man (zusätzlich zu der Liste mit Benutzerrollen) eine Liste aller Benutzer (und zwar 3- oder 4-Spaltig) ausgegeben bekommt und dort dann einfach beliebige Benutzer anwählen kann, die den Node dann sehen können. Das ist - soweit ich das erkennen kann - mit TAC nicht ohne weiteres möglich, oder?
Ich suche nach einer Lösung
am 20.08.2010 - 07:34 Uhr
Ich suche nach einer Lösung um veröffentlichte nodes nur zugänglich zu machen, wenn dessen author eine bestimmte rolle hat.
ist für dieses szenario vielleicht eine lösung bekannt?
Das würde ich über die
am 20.08.2010 - 15:13 Uhr
Das würde ich über die node.tpl.php machen.
Dort hat man so eine Stelle:
<?php
print $content;
?>
Daraus könnte man sowas machen:
<?php
$myuser = user_load($node->uid);
if (in_array('Rollenbezeichnung', $myuser->roles))
{
print $content;
{
else
{
//Fehlerseite, Weiterleitung, was auch immer
{
?>
Übertragbarkeit zu Drupal7
am 28.08.2012 - 10:30 Uhr
Hi,
vielen Dank für die gute Anleitung. Ich habe versucht das ganze mit Drupal7 so gut es geht umzusetzen.
An der Stelle der dynamischen Variante komm ich bei den Rules-Einstellungen nicht weiter. Bei Actions gibt es die Auswahlmöglichkeit
"Change permissions based on rolereference field" (die Aktion findet sich unter dem Gliederungspunkt "Node")
leider nicht, nicht einmal den Gliederungspunkt "node".
Habe ich da einen Denkfehler, gibt es eine bessere Möglichkeit oder gibts eine Anleitung für Drupal7?
Versionsinformationen:
Drupal: 7.14
Content Access Control: 7.x-1.2-beta1
Node Privacy By Role: 7.x-1.x-dev
CCK: 7.x-2.x-dev
Role Reference: 7.x-1.0
Rules: 7.x-2.2
Vielen Dank für das weiterhelfen!
Viele Grüße