Unterstützung bei der DSGVO-konformen Umsetzung von ein oder mehreren REDAXO-Websites.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
assets
fragments
lang
lib
module
pages
plugins/server
.gitignore
LICENSE
README.md
boot.php
help.php
install.php
install.sql
package.yml
uninstall.sql
update.php

README.md

Inhaltsübersicht

Screenshot

Einleitung

Screenshot

Über das Addon

Dieses Addon bietet Unterstützung bei der DSGVO-konformen Umsetzung von ein oder mehreren REDAXO-Websites.

Das Addon kann eine anwaltliche Beratung und sorgfältige Prüfung des Einzelfalls nicht ersetzen. Für die DSGVO-konforme Umsetzung ist die ganzheitliche Betrachtung der auf einer Website anfallenden Daten und deren Nutzung unerlässlich.

zurück zur Übersicht

Features

Die Client-Funktion ist für die Darstellung und die ggf. automatische Aktualisierung von Datenschutz-Textbausteinen und der Verwaltung von Tracking-Codes gedacht.

  • Verwaltung von Textbausteinen für die Datenschutz-Erklärung inkl. Quellen-Nennung
  • Umfangreiches Setup, das einen bei einem Teil der DSGVO geforderten Auflagen unterstützt und Teile der REDAXO-Seite prüft
  • Vorlage für die Ausgabe der Datenschutz-Erklärung, welche ein Opt-Out-Cookie des Nutzers setzen können.
  • Vorlage für die Ausgabe der Cookie-Einverständnis-Meldung
  • Vorlage für die Ausgabe von Tracking-Codes und externen Inhalten, welche ein Opt-Out-Cookie des Nutzers berücksichtigen.
  • Cronjob zum automatischen Abruf von Texten (experimentell)
  • Cronjob zum automatischen Löschen alter Datensätze (experimentell)
  • Cronjob zum Löschen alter Backups (in Arbeit)
  • Cronjob zum Löschen alter PHP-Mailer-Logs (in Arbeit)

zurück zur Übersicht

Bug-Meldungen, Hilfe und Links

zurück zur Übersicht

Installation

Voraussetzung für die aktuelle Version des DSGVO-Addons: REDAXO 5.3, Cronjob-Addon, MarkItUp-Addon Beim Installieren und Aktivieren des Addons werden die Tabellen für den Client und ggf. den Server angelegt. Nach erfolgreicher Installation gibt es im Backend unter AddOns einen Eintrag "DSGVO".

zurück zur Übersicht

Setup

Übersicht

Unter dem Reiter Setup wird in mehreren Schritten die aktuelle Installation sowie deren Konfiguration überprüft. Die DSGVO-konforme Umsetzung erfordert ggf. ein händisches eingreifen.

  • Übersicht
  • Datenschutz-Erklärung einbinden
  • SQL-Backups
  • PHP-Mailer Logs
  • Kontaktformular
  • automatisiertes Löschen
  • Externe Dienste

zurück zur Übersicht

Datenschutz-Erklärung

Übersicht

Unter dem Reiter Datenschutz-Erklärung werden Text-Bausteine der Datenschutz-Erklärung sowie deren Codes verwaltet. Diese können

  • manuell hinzugefügt werden, oder
  • via Cronjob seitens des Servers am Client aktualisiert werden (in Arbeit)

Die einzelnen Felder sind:

  • Website (Domain aus dem System oder Domain des YRewrite-Projekts, z.B. domain.de)
  • Sprache (ISO-Sprachcode, z.B. de)
  • Kategorie (in Arbeit)
  • Schlüssel (ein eindeutiger Schlüssel für den Dienst, der ggf. auch im Opt-Out als Cookie hinterlegt wird, z.B. google_analytics oder facebook_pixel)
  • Überschrift
  • Status (anzeigen / verbergen)
  • Datenschutz-Text
  • Quelle (ggf. notwendig für Nutzungsrechte externer Dienste, bspw. dem Datenschutz-Generator von eRecht24)
  • Link zur Quelle (URL zur Quelle)

zurück zur Übersicht

Einrichtung der Datenschutz-Erklärung (Modul)

Dem Addon liegt ein generisches Modul bei, das automatisch in Abhängigkeit der gewählten REDAXO-Sprache und der gewählten Domain einen Code erzeugt. Es erzeugt ebenfalls bei den passenden Diensten einen Opt-Out-Code.

Moduleingabe (benötigt aktuell MForm)


<?php // dsgvo_module_input - Diese Zeile nicht löschen 

if(rex_addon::get('mform')->isAvailable()) {
    $mform = new MForm();

    if(rex_addon::get('yrewrite')->isAvailable()) {
        $domains = [];
        foreach(rex_yrewrite::getDomains(true) as $domain => $object) {
            $domains[$domain] = $domain;
        } 

        $mform->addSelectField("1", $domains, array('label'=>'Domain')); // use string for x.0 json values
    } else {
        $mform->addSelectField("1", [rex::getServer()], array('label'=>'Domain')); // use string for x.0 json values
    }

    $langs = [];

    foreach(rex_clang::getAll(true) as $lang) {
        $langs[$lang->getCode()] = $lang->getCode();
    }
    $mform->addSelectField("2", $langs, array('label'=>'Sprachen')); // use string for x.0 json values
    echo $mform->show();
} else {
    // Input-Felder ohne MForm. TODO   
}
?>

Modulausgabe

<?php // dsgvo_module_output - Diese Zeile nicht löschen ?>
<section class="modul modul-privacy">
<?php
    $lang = rex_clang::getCurrent()->getCode();
    $dsgvo_pool = array_filter(rex_sql::factory()->setDebug(0)->getArray('SELECT * FROM rex_dsgvo_client WHERE status = 1 AND domain = :domain AND lang = :lang ORDER by prio',[':domain'=> "REX_VALUE[1]", ':lang'=> "REX_VALUE[2]"]));

foreach($dsgvo_pool AS $key => $dsgvo_item) {
    $dsgvo_pool[$key]['text'] = markitup::parseOutput ('textile', $dsgvo_item['text']);
}

    $output = new rex_fragment();
    // ggf. Sprache anpassen
    $output->setVar("dsgvo_pool", $dsgvo_pool);
    $output->setVar("lang", $lang);
    $output->setVar("domain", $domain);
    $output->setVar("consent", "Einwilligen");
    $output->setVar("revoke", "Widerrufen");
    $output->setVar("source", "Quelle:");
    echo $output->parse('dsgvo-page.fragment.inc.php');
?>
</section>

Achtung: Um die Funktionalität zu überprüfen, bitte auf der Live-Seite in den Entwickler-Einstellungen des Browsers das korrekte Setzen des Cookies überprüfen. Der Cookie lautet: dsgvo_[schlüssel] = -1 - der entsprechende Dienst darf dann nicht im Tracking-Code auftauchen.

zurück zur Übersicht

Einrichtung der Tracking-Codes

Dem Addon liegt eine generische Umsetzung bei, die die hinterlegten Tracking-Codes in Abhängigkeit des vom Nutzer gewählten Opt-Outs ausgibt oder die Ausgabe verhindert. Diese Code-Zeilen zwischen den <head>-Tag schreiben:

<!-- DSGVO -->
<script language="javascript" type="text/javascript" src="/assets/js/cookie.js"></script>
<?php
	$lang = rex_clang::getCurrent()->getCode();
	$dsgvo_pool = rex_sql::factory()->setDebug(0)->getArray('SELECT * FROM rex_dsgvo_client WHERE status = 1 AND lang = :lang ORDER by prio',[':lang'=>$lang]);

	$output = new rex_fragment();
	$output->setVar("dsgvo_pool", $dsgvo_pool);
	$output->setVar("lang", $lang);
	$output->setVar("domain", $domain);

	echo html_entity_decode($output->parse('dsgvo-tracking.fragment.inc.php'), ENT_HTML5 | ENT_QUOTES);
?>

Achtung: Um die Funktionalität zu überprüfen, bitte auf der Live-Seite in den Entwickler-Einstellungen des Browsers das korrekte Setzen des Cookies überprüfen. Der Cookie lautet: dsgvo_[schlüssel] = -1 - der entsprechende Dienst darf dann nicht im Tracking-Code auftauchen.

zurück zur Übersicht

Einrichtung des Cookie-Einverständnis-Banners

Dem Addon liegt eine generischer Code bei, der ein minimalistisches Cookie-Einverständnis-Banner ("Cookie Consent") erzeugt. Das CSS kann im Reiter Cookie-Einverständnis angepasst werden.

$output = new rex_fragment();

// ggf. Sprache anpassen
$output->setVar("info", "Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer");
$output->setVar("learn_more", "Datenschutzerklärung");
$output->setVar("dismiss", "OK");
$output->setVar("url", "/datenschutz/");

echo $output->parse('dsgvo-consent-custom.fragment.inc.php');

Achtung: Der Banner darf wichtige Elemente wie bspw. den Link zum Impressum, zur Datenschutz-Seite oder Bildquellen nicht verdecken! Für die korrekte Einbindung ist der Entwickler bzw. der Betreiber verantwortlich.

zurück zur Übersicht

Server-PlugIn

Features

Die Server-Funktion ist für das zentrale Verwalten und Bereitstellen der Datenschutz-Erklärung und Tracking-Codes für ein oder mehrere Projekte gedacht.

  • Verwaltung von Textbausteinen für die Datenschutz-Erklärung inkl. Quellen-Nennung für mehrere Projekte
  • Standalone-Client zum Einfügen in ältere Projekte (REDAXO 4, andere CMS)
  • Projekte-Verwaltung für die unterschiedliche Zusammenstellung der Texte
  • Muster-Verwaltung unter der Domain "default"
  • Cronjob zum manuellen Anstoßen der Clients
  • Logfiles zur Nachverfolgung, welche Projekte wann Texte abgerufen haben (in Arbeit)

zurück zur Übersicht

Server

Unter dem Reiter Server werden Domains verwaltet.

Die einzelnen Felder sind:

  • Website (Domain aus dem System oder Domain des YRewrite-Projekts, z.B. domain.de)
  • Sprache (ISO-Sprachcode, z.B. de)

Außerdem werden in Logs die Verbindungen festgehalten.

Texteverwaltung

Mit einem Klick auf Texte verwalten werden Text-Bausteine der Datenschutz-Erklärung sowie deren Codes in Abhängigkeit eines Projekts verwaltet. Diese können via Cronjob seitens des Servers am Client aktualisiert werden. (in Arbeit)

Die einzelnen Felder sind:

  • Website (Domain aus dem System oder Domain des YRewrite-Projekts, z.B. domain.de)
  • Sprache (ISO-Sprachcode, z.B. de)
  • Schlüssel (ein eindeutiger Schlüssel für den Dienst, der ggf. auch im Opt-Out als Cookie hinterlegt wird, z.B. google_analytics oder facebook_pixel)
  • Überschrift
  • Status (anzeigen / verbergen)
  • Datenschutz-Text
  • Code
  • Quelle (ggf. notwendig für Nutzungsrechte externer Dienste, bspw. dem Datenschutz-Generator von E-Recht 24)
  • Link zur Quelle (URL zur Quelle)

zurück zur Übersicht

Sync-Cronjob

Der Sync-Cronjob kann sich mit externen REDAXO-Installationen (und Standalone-Versionen) verbinden und deren Datenschutz-Texte aktualisieren. Der Abruf der Texte vom Client wird über einen API-Call umgesetzt. (in Arbeit)

zurück zur Übersicht

Standalone-Version

Dem DSGVO-Server-Plugin liegt ein Standalone-Client bei, um beim Server verwaltete Texte auch am Client zu aktualisieren. Es befindet sich unter /redaxo/src/addons/dsgvo/plugins/server/standalone

Weiterführende Informationen und Links zur DSGVO

Auftragsverarbeitungs-Verträge

(AV-Vertrag, vormals Auftragsdatenverarbeitungs-Vertrag ADV-Vertrag) / Data-processing-agreements (DPA-contract)

Liste internationaler Datenverarbeiter und ihrer AVV/DPAs www.tollwerk.github.io/data-processing-agreements/ www.github.com/tollwerk/data-processing-agreements

zurück zur Übersicht