AddOn


Kontrolle des Zugriffs auf Artikel und Mediendateien

Beschreibung

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 wird auch eine Besuchergruppe eingerichtet, die von der allgemeinen Öffentlichkeit abgegrenzt ist.
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.
Es ist nur eine einfache Rewrite-Regel erforderlich.
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 kann eine vorhandene oder eine neue Top-Medienkategorie als geschützter Bereich für Mediendateien eingerichtet werden.
Darüber hinaus kann bei Bedarf auch eine Kategorie als “verbotener Bereich” eingerichtet werden. Auf diesen hat nur der Site-Administrator Lesezugriff als Besucher, wenn er im Backend eingeloggt ist.

Login-Seite:
Die Authentifizierung erfolgt über eine Login-Seite, die an geeigneter Stelle einzurichten ist. Ein entsprechendes Formular ist verfügbar.

Bewacher-Benutzer:
Auf der Login-Seite muss der Login-Name und das zugehörige Passwort eines Redaxo-Benutzers verifiziert werden. Die Zuordnung der geschützten Kategorie bzw. Medienkategorie zu diesem 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:
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 die Login-Seite anstelle des Artikelinhalts angezeigt werden. Ein exemplarischer PHP-Code-Schnipsel ist verfügbar.
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/access_control.html

Umsetzung

Wolfgang Busch

An der Windmühle 3
38173 Dettum

busch-dettum.de


Versionen

2.3.2

Für REDAXO
^5.3.0
Veröffentlicht am
16.02.2021

Ein Flüchtigkeitsfehler in der Dokumentation ist behoben.

2.3.1

Für REDAXO
^5.3.0
Veröffentlicht am
16.02.2021

Die Funktion print_file ist jetzt vereinfacht. Außerdem enthält sie keinen Rückgriff mehr auf ein Fehler-Bild, das in neueren Versionen des Media-Managers nicht mehr verfügbar ist.

Jetzt werden auch Mediendateien korrekt angezeigt/ausgeliefert, wenn sie – z.B. per Upload – in ‘Keine Kategorie’ zugeordnet wurden.

Das AddOn muss nicht nach jedem Löschen des System-Caches re-installiert werden. Die Dokumentation ist entsprechend korrigiert.

2.3

Für REDAXO
^5.3.0
Veröffentlicht am
07.02.2021

Die Dokumentation ist überarbeitet und damit (hoffentlich) benutzerfreundlicher.

In der Detailbeschreibung ist ein Fehler verbessert, genauer im PHP-Code-Schnipsel für das Seiten-Template und dort im Link auf die Login-Seite.

Die Funktion “protected_or_forbidden()” ist umbenannt in “protected_or_prohibited()”. Der entsprechende Code-Schnipsel für das Seiten-Template muss spätestens mit der nächsten AddOn-Version angepasst werden (derzeit ist die bisherige Funktion noch als Alias vorhanden).

Der Aufruf der Login-Seite liefert die Ids der Bewacher-Benutzer, die sich auf der Seite authentifizieren können. Ein Aufruf ohne oder mit leerem URL-Parameter liefert jetzt die Ids ALLER Bewacher-Benutzer anstatt keine.

Ist ein Bewacher-Benutzer eingeloggt, zeigt ein erneuter Aufruf der Login-Seite jetzt zunächst nur einen Abmelden-Button. Erst nach erfolgter Abmeldung wird ein neues Authentifizierungsformular angezeigt.

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).