Rechtesystem

Das Rechtesytem von Drupal kann Rechte nur zusichern, aber nicht entziehen. Diese Tatsache muss verstanden sein und kann schnell zum Eigentor werden, was an einem Beispiel erklärt werden soll:

Es gibt das Zusatz-Modul "Content-Access" mit dem man Rechte auf Inhaltstypbasis vergeben kann. Zum Beispiel soll der Inhaltstyp Protokoll nur angemeldeten Benutzern zugänglich sein. Der Typ Forenbeitrag soll dagegen für anonyme und für angemeldete Nutzer verfügbar sein. Eventuell hat man einen öffentlichen Bereich im Forum eingerichtet, was diese Einstellung rechtfertigt.

Spätestens jetzt ist Content-Access mit den Aufgaben überfordert. Es kann wegen seiner Arbeitsweise nicht bestimmte Bereiche des Forums freigeben. Hier kommt das Modul "Forum-Access" ins Spiel. Mit seiner Hilfe kann man Forenteile für bestimmte Nutzergruppen freigeben, oder nicht.

Nun zum "Eigentor": Zuerst installiert man Content-Access und vergibt die Rechte. Den Inhaltstyp Forenbeitrag erlaubt man anonymen und authentifizierten Nutzern zu erstellen. Später, wenn das Forum wächst und in Bereiche unterteilt werden soll, installiert man Forum-Access. Man stellt die Zugriffs-Rechte entsprechend ein und wiegt sich in Sicherheit. Die Forenübersicht unterstützt diese Meinung, da nichtberechtigte Nutzer die entsprechenden Forenteile nicht sehen.

Ruft man aber ein Thema über einen direkten Link auf, für das man
eigentlich keinen Zugriff hat, wird es trotzdem angezeigt! Was ist passiert? Da Drupal die Rechte nur geben aber nicht entziehen kann, hat man sich mit Content-Access bereits selbst ausgetrickst. Anonyme + authentifizierte Nutzer entspricht bereits ALLEN Benutzern! Daher haben die Einstellungen über Forum-Access nur kosmetische Wirkung, aber keine reale.

 

Um diesem Dilemma zu entkommen, sollte man wie folgt vorgehen:
Beim Inhaltstyp Forenbeitrag lässt man alle Rechte-Einstellungen weg. Die Zugriffsberechtigungen werden dann über die Einstellungen von Forum-Access vorgenommen. Die grundlegende Erlaubnis Themen zu erstellen, wird bereits unter http://example.com/?q=admin/user/access festgelegt.