Software-Entwicklungen

Kontrolle des Zugriffs auf Artikel und Mediendateien
access_control, Version 2.6.2
Autor: Wolfgang Busch

Dieses AddOn ermöglicht eine Zugriffskontrolle für ausgewählte Bereiche von Artikeln und/oder Mediendateien. Damit ist gemeint, dass ein Besucher im Front-End eine Authentifizierung benötigt, um bestimmte Seiten oder Mediendateien sehen zu dürfen. Auf diese Weise werden Besuchergruppen eingerichtet, die von der allgemeinen Öffentlichkeit abgegrenzt sind.
Der Zugriff wird über die Authentifizierung von Redaxo-Benutzern kontrolliert, denen über ihre Rollen die entsprechenden Bereiche zugeordnet sind.
Die erfolgte Autorisierung wird Session-basiert gespeichert.
Das AddOn ist komplett zweisprachig eingerichtet (deutsch, englisch).
 
Geschützte Bereiche:
Die Zugriffskontrolle kann für jede beliebige Kategorie eingerichtet werden ("geschützter Bereich"). Der Schutz erstreckt sich dann auf alle Artikel, die in dieser Kategorie und in ihren Unterkategorien liegen. Ggf. muss der inhaltlich aufgebaute Kategorienbaum zugunsten des Datenschutzes umstrukturiert werden, indem schutzwürdige Artikel in einen geschützten Bereich verschoben werden.
Analog können vorhandene oder neue Top-Medienkategorien als geschützte Bereiche für Mediendateien angelegt werden.
Darüber hinaus kann bei Bedarf auch eine Kategorie als "verbotener Bereich" definiert werden. Auf diesen hat nur der Site-Administrator Lesezugriff als Besucher, wenn er im Backend eingeloggt ist.

Bewacher-Benutzer:
Die Zuordnung einer geschützten Kategorie bzw. Medienkategorie zu einem Redaxo-Benutzer ("Bewacher-Benutzer") wird im Rahmen der Redaxo-Benutzerverwaltung über entsprechende Rollen realisiert. Einem Bewacher-Benutzer können mehrere geschützte Bereiche zugeordnet werden, sowohl Kategorien als auch Medienkategorien.

Überprüfung der Zugriffsberechtigung:
Mithilfe einer AddOn-Funktion lässt sich feststellen, ob ein angeforderter Artikel öffentlich, geschützt oder verboten ist. Dies geschieht sinnvollerweise im Seiten-Template. Ggf. wird dort anstelle des Artikelinhalts ein Link auf ein Formular zur Authentifizierung angezeigt.
Die Überprüfung, ob eine Mediendatei öffentlich oder geschützt ist, erfolgt in der Boot-Datei. Bei fehlender Zugriffsberechtigung wird anstelle der angeforderten Mediendatei ein Standard-Fehlerbild angezeigt.

Authentifizierung:
Um auf einen geschützten Artikel oder eine geschützte Mediendatei zugreifen zu können, muss sich ein Besucher vorher durch Angabe von Login-Name und Passwort des zugehörigen Bewacher-Benutzers authentifizieren. Ein entsprechendes Formular ist verfügbar.
 

Einrichtung der Zugriffskontrolle

Erforderlich sind die folgenden Schritte, sinnvollerweise auch in dieser Reihenfolge:

Einrichtung von Bewacher-Benutzern in der Redaxo-Benutzerverwaltung:
Ein Bewacher-Benutzer wird wie ein Redakteur angelegt. Dabei ist zu beachten:
  • Er wird als inaktiv definiert, sein Passwort kann daher nur mit Admin-Rechten geändert werden.
  • Das Feld "Beschreibung" bekommt den Wert "Protector" (bzw. "Guardian" für den verbotenen Bereich).
  • Ihm wird eine Rolle zugewiesen. In dieser sind Kategorien und Top-Medienkategorien auszuwählen, die normalerweise den Verantwortungsbereich (Schreibzugriff) des Benutzers als Redakteur definieren. Hier werden sie als geschützte Bereiche interpretiert.
  • Ein Bewacher-Benutzer kann mehrere derartige Rollen erhalten. Auf diese Weise ist es möglich, dass sich geschützte Bereiche überschneiden und der Zugriff auf Kategorien von mehr als einem Bewacher kontrolliert wird.
Nach Einrichtung der Bewacher-Benutzer wird der Schutzmechanismus durch Re-Installation des AddOns aktiviert bzw. aktualisiert. Dabei werden die zugehörigen Daten im AddOn-Cache abgelegt (json-codiert).

Kontrolle des Zugriffs auf die aktuelle Seite, eingefügt im Seiten-Template:
Der Rückgabewert der AddOn-Funktion protected_or_prohibited() ermöglicht die Entscheidung, ob die aktuelle Seite angezeigt werden darf oder nicht:
=0: die Seite ist öffentlich, oder der Besucher ist autorisiert
=1: verbotener Bereich, der Besucher ist nicht als Site-Administrator im Backend eingeloggt
>1: Id des Bewacher-Benutzers der Seite (oder eine Komma-separierte Liste mehrerer Ids, jede >1),
der Besucher hat sich nicht als zugehöriger Bewacher-Benutzer (oder als einer dieser) authentifiziert
Es folgt ein schematisches PHP-Code-Schnipsel für das Seiten-Template mit Nutzung der AddOn-Funktion access_allowed($uid). Diese zeigt anstelle des Seiteninhalts einen Hinweistext sowie einen Link auf ein Authentifizierungs-Formular an. Bei der Installation wird ein entsprechendes PHP-Skript im Basisverzeichnis abgelegt (Datei '/signin_page.php').
$uid=access_control::protected_or_prohibited();
 . . .
if(intval($uid)<=0) . . . // display navigation
 . . .
if(intval($uid)>0):
  echo access_control::access_allowed($uid); // link to the sign-in page
  else:
  echo $this->getArticle(); // article content
  endif;
Ein Redaxo-Redakteur hat als Besucher auch dann Lesezugriff auf seine Seiten, wenn diese in geschützten Bereichen liegen, sofern er sich im Backend eingeloggt hat.

Kontrolle des Zugriffs auf Mediendateien über die Datei .htaccess:
Die Kontrolle der Zugriffsberechtigung auf die Mediendateien wird in der Funktion control_file($mediatype,$file), aufgerufen in der Boot-Datei, vorgenommen. Sie erfolgt auf der Basis des Media-Manager-URLs. Auf diese Weise kann die betreffende Datei und ihr Medientyp mithilfe der Funktion rex_get() ermittelt werden. Medien-URLs der Form '/media/filename' müssen entsprechend umgeleitet werden:
 RewriteRule  ^media/(.*)$  /index.php?rex_media_type=default&rex_media_file=$1
 

Anzeige eines Bespiels

AddOn-Download