AddOn


Kontrolle des Zugriffs auf Artikel und Mediendateien

Beschreibung

Dieses AddOn ermöglicht einen Zugriffsschutz für ausgewählte Bereiche von Artikeln und/oder Mediendateien. Der Zugriff wird über die Authentifizierung von Redaxo-Benutzern kontrolliert, denen über ihre Rollen die entsprechenden Kategorien zugeordnet sind. Die erfolgte Autorisierung wird Session-basiert gespeichert.
Es ist nur eine einfache Rewrite-Regel erforderlich.
Das AddOn ist komplett zweisprachig eingerichtet (deutsch, englisch).

Geschützte Bereiche:
In Rollen für Redaxo-Benutzer werden normalerweise Kategorien und Medienkategorien markiert, um den Verantwortungsbereich (Schreibzugriff) eines Redakteurs für alle Artikel und Mediendateien im zugehörigen Pfad festzulegen. In diesem AddOn werden entsprechend definierte Kategorien und Top-Medienkategorien mit allen im Pfad darunter liegenden Artikeln bzw. Dateien als “geschützte Bereiche” interpretiert. Auf diese Bereiche erhalten Besucher erst nach Authentifizierung im Frontend mit Name und Passwort des zugehörigen Redaxo-Benutzers Lesezugriff.

Bewacher-Benutzer:
Redaxo-Benutzer mit solchen Rollen können als “Bewacher-Benutzer” für ihre zugehörigen Bereiche eingerichtet werden. Auf diese Weise kann auch eine Kategorie festgelegt werden, in deren Pfad nur der im Backend eingeloggte Site-Administrator als Besucher Lesezugriff hat (“verbotener Bereich”). Ein im Backend eingeloggter Redaxo-Redakteur hat auch dann Lesezugriff auf seine Seiten, wenn diese in geschützten Bereichen liegen.

Überprüfung der Zugriffsberechtigung:
Ob ein angeforderter Artikel öffentlich, geschützt oder verboten ist, kann mithilfe einer AddOn-Funktion festgestellt werden, sinnvollerweise im Seiten-Template. Dort kann ggf. ein Hinweis oder ein Link auf eine Login-Seite anstelle des Artikelinhalts angezeigt werden. 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.


busch-dettum.de/public/it/dokumentation/access_control.html

Umsetzung

Wolfgang Busch

An der Windmühle 3
38173 Dettum

busch-dettum.de


Versionen

2.2

Für REDAXO
^5.3.0
Veröffentlicht am
24.11.2020

Durch Nutzung des AddOn-Caches sowie zusätzliche Session-Variable werden etliche Zugriffe auf die Redaxo-Tabellen rex_user und rex_user_role vermieden, um eine bessere Performance des AddOns zu erreichen.

Die Daten der Bewacher-Benutzer werden jetzt im AddOn-Cache abgelegt, und zwar über die neue install.php. Daher muss nach Einrichtung und nach jeder Änderung der Bewacher-Benutzer eine Re-Installation des AddOns durchgeführt werden. Der Cache wird bei der De-Installation wieder gelöscht. Wird der Cache auf anderem Wege (z. B. in den System-Einstellungen) gelöscht, ist ebenfalls ein re-install nötig, um den AddOn-Cache neu aufzubauen.

Nach Authentifizierung eines Besuchers werden jetzt alle für die Zugriffskontrolle notwendigen Daten des zugehörigen Bewacher-Benutzers in Session-Variablen gespeichert, nicht nur dessen Login-Name.

Solange ein Besucher als Redakteur im Backend eingeloggt ist, hat er Zugriff auf die Kategorien und Medienkategorien, die seiner Rolle zugeordnet sind. Dazu werden jetzt auch seine für die Zugriffskontrolle notwendigen Daten im Session-Array gespeichert, analog zu einem authentifizierten Besucher.

Wenn mehrere Bewacher-Benutzer den Zugriff auf eine Kategorie kontrollieren, kann sich ein Besucher jetzt über jeden dieser Bewacher authentifizieren, nicht nur (wie bisher) über den zufällig letzten.

2.1.1

Für REDAXO
^5.3.0
Veröffentlicht am
02.10.2020

Kleinere Korrekturen am Programmcode zur Vermeidung von PHP-Warnungen.

2.1

Für REDAXO
^5.3.0
Veröffentlicht am
11.10.2019

Der Quellcode ist redaktionell und mit Blick auf bessere Performance überarbeitet.

2.0

Für REDAXO
^5.3.0
Veröffentlicht am
05.10.2019

Der bisherige ‘Gemeinschaftsbenutzer’ wird ersetzt durch einen Redaxo-Benutzer (rex_user). Darüber hinaus kann der Zugriff auf verschiedene Kategorien und/oder Medienkategorien individuell über mehrere Redaxo-Benutzer kontrolliert werden. Damit entfällt auch die gesamte Konfiguration.

Die Funktion protected_or_forbidden() gibt jetzt andere Werte zurück.
!!! Die entsprechende Passage im Seiten-Template muss geändert werden !!!

An die Login-Seite muss nun die Redaxo-User-Id des jeweiligen Bewacher-Benutzer übergeben werden (per URL-Parameter uid=user_id). Für die Seite wird kein Modul mehr zur Verfügung gestellt (Einzeiler, kann per copy & paste aus der Beschreibung übernommen werden).

Falls Kategorien und/oder Medienkategorien geschützt werden, für die ein Redaxo-Redakteur zuständig ist, ist dieser auch authentifiziert, wenn er im Backend eingeloggt ist.

1.8

Für REDAXO
^5.3.0
Veröffentlicht am
31.07.2019

Ergänzung einer weiteren Formularseite zur Authentifizierung eines beliebigen weiteren Benutzers (für mögliche andere Anwendungen), unter Nutzung einer weiteren Session-Variablen.
Die Passwörter werden jetzt verschlüsselt abgelegt (rex_login::passwordHash($pwd)) und in verschlüsselter Form abgeprüft (rex_login::passwordVerify($pwd,$encr_pwd)).

1.7.2

Für REDAXO
^5.3.0
Veröffentlicht am
25.07.2019

Die Abmeldung nach erfolgreicher Authentifizierung funktioniert jetzt vorschriftsmäßig.

1.7.1

Für REDAXO
^5.3.0
Veröffentlicht am
12.07.2019

Ergänzung für den Verweis auf eine Mediadatei in der Form ‘index.php?rex_media_file=FILE&rex_media_type=TYPE’.
Die Datei wird auch gefunden und angezeigt, wenn sie außerhalb des Ordners media liegt und TYPE über den Effekt mediapath (‘Datei: Pfad anpassen’) den zugehörigen Ordner liefert.

1.7

Für REDAXO
^5.3.0
Veröffentlicht am
28.06.2019

Verzicht auf eine eigene Funktion ‘sendFile’, stattdessen wird
‘rex_response::sendFile’ verwendet.
Parameter- und CSS-Klassennamen werden jetzt als benannte Konstanten abgelegt.
Im LogIn-Formular und im Modul werden die sprachabhängigen Texte jetzt anhand der Sprach-Id ausgewählt, nicht mehr anhand des Sprach-Codes. Außerdem wird nach erfolgreicher Authentifizierung ein Abmelde-Button angezeigt.
Anstatt leerer oder nicht vorhandener Media-Dateien wird die Datei ‘warning.jpg’ des AddOns media_manager angezeigt.

1.6.2

Für REDAXO
^5.3.0
Veröffentlicht am
05.03.2019

Verbesserung der Dokumentation im Bereich der Konfiguration und Verlegung aller Styles in die Stylesheet-Datei.

1.6.1

Für REDAXO
^5.3.0
Veröffentlicht am
05.03.2019

Ein dummer Fehler im Installations-Script ist behoben.

1.6.0

Für REDAXO
^5.3.0
Veröffentlicht am
02.03.2019

Der gesamte Source-Code ist jetzt auf UTF-8 umgestellt.
Der Code ist mit ‘error_reporting(E_ALL);’ überprüft.
Der AddOn-Modul zur Erzeugung eines LogIn-Formulars ist jetzt komplett zweisprachig und kann gleichermaßen im deutschen wie auch im englischen Zweig verwendet werden.
Die Überprüfung, ob ein Besucher als ycom-User eingeloggt ist, ist ausgebaut.

1.5.0

Für REDAXO
^5.3.0
Veröffentlicht am
11.02.2019

Schlüssel von neu definierten assoziativen Arrays werden jetzt als Konstanten (in Apostrophs) behandelt.

1.4.0

Für REDAXO
^5.3.0
Veröffentlicht am
11.07.2018

Jetzt werden bei der Ausgabe von Bildern auch die Medientypen gemäß Redaxo Media Manager berücksichtigt.

1.3.0

Für REDAXO
^5.3.0
Veröffentlicht am
08.07.2018

Jetzt lassen sich alle Konfigurationsparameter einzeln zurücksetzen bzw. löschen.

1.2.0

Für REDAXO
^5.3.0
Veröffentlicht am
06.06.2018

Alle Funktionen der Klassen access_control und access_control_install werden jetzt vorschriftsmäßig als “public static function …” deklariert.
Bei der De-Installation werden die Konfigurationsvariablen jetzt aus der Tabelle rex_config entfernt.

1.1.0

Für REDAXO
^5.3.0
Veröffentlicht am
19.05.2018

Bei großen Dateien (> 250 MB) produzierte rex_managed_media::sendMedia() einen Speicherüberlauf.
Die Ausgabe der Mediendateien erfolgt auf diesem Wege jetzt nur noch für Bilder, PDF-Dokumente und Plaintext. Andere Dokumente werden mit einer modifizierten Version von rex_response::sendFile(…) ausgegeben.
rex_response::sendFile selbst liefert Dateien aus dem Browser-Cache, d.h. nach einem LogIn würde weiterhin ‘protected.gif’ angezeigt.

1.0.0

Für REDAXO
^5.3.0
Veröffentlicht am
11.05.2018

Dieses AddOn ermöglicht einen Zugriffsschutz für ausgewählte Bereiche von Artikeln beziehungsweise Mediendateien. Es ist komplett zweisprachig eingerichtet (deutsch, englisch).