summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java')
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java98
1 files changed, 30 insertions, 68 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java
index 9e6ffd7d..eed17d34 100755
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java
@@ -3,9 +3,19 @@ package org.openslx.dozmod.gui.window;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import javax.xml.bind.DatatypeConverter;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.log4j.Logger;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.gui.helper.UiFeedback;
+import org.openslx.dozmod.util.ResourceLoader;
/**
* Window for showing the privacy notice.
@@ -13,93 +23,45 @@ import org.openslx.dozmod.gui.helper.UiFeedback;
@SuppressWarnings("serial")
public class PrivacyNoticeWindow extends GenericNoticeWindow implements UiFeedback {
- /**
- * Use a version number for the privacy notice. Whenever we add/change
- * something, this will be increased
- */
- public static final int PRIVACY_VERSION = 1;
- protected String notice = "Datenschutz \n"
- + "-----------------------------------------------------\n"
- + "Wenn Sie sich an der bwLehrpool-Suite anmelden bzw. diese nutzen, werden "
- + "verschiedene Informationen über Sie erfasst und gespeichert. Die "
- + "nachfolgenden Punkte sollen Ihnen helfen zu verstehen, welche Daten zu "
- + "welchem Zweck verwendet werden und wohin Sie sich bei Fragen wenden "
- + "können.\n\n"
- + "Was wird gesammelt?\n"
- + "-----------------------------------------------------\n"
- + "Beim Login werden Name, E-Mail, Hochschule sowie Zeitpunkt des letzten "
- + "Logins gespeichert und einer eindeutigen Nutzer-ID zugeordnet. Dies "
- + "umfasst auch Informationen darüber, wann Sie sich für die Nutzung "
- + "erstmalig registriert haben. Außerdem werden Informationen über einige "
- + "Ihrer Aktivitäten innerhalb der bwLehrpool-Suite erfasst "
- + "(beispielsweise wenn Sie eine VM hochladen oder löschen).\n\n"
- + "Wozu werden diese Daten gesammelt?\n"
- + "-----------------------------------------------------\n"
- + "Die Informationen sind notwendig, um VMs und Veranstaltungen Ihnen bzw. "
- + "Ihren Kollegen eindeutig zuordnen und ggf. bei rechtlichen Verstößen "
- + "eingreifen zu können.\n\n"
- + "Wenn Sie VMs herunterladen (vom Satellitenserver oder öffentlichen "
- + "Speicher), möchten Sie sicherlich wissen, von wem eine VM erstellt "
- + "wurde und wen Sie ggf. kontaktieren können, falls die VM nicht wie "
- + "erwartet funktioniert. \n\n"
- + "Außerdem sind Nutzungsdaten für Diagnosezwecke wichtig, damit ein "
- + "Administrator Ihnen helfen kann, falls Sie z.B. Ihre VM nicht mehr "
- + "finden können und vermuten, dass diese von jemandem fälschlicherweise "
- + "gelöscht wurde.\n\n"
- + "Mit wem werden diese Daten geteilt?\n"
- + "-----------------------------------------------------\n"
- + "Die erhobenen Daten werden ausschließlich auf dem Satellitenserver "
- + "gespeichert, mit dem Sie sich während des Logins verbunden haben. "
- + "Dieser steht in der Regel unter der Kontrolle des Rechenzentrums Ihrer "
- + "Hochschule.\n\n"
- + "Bei der erstmaligen Nutzung der Suite wurden Sie aufgefordert, sich "
- + "über ein Webportal zu registrieren. Dies ist notwendig, um Ihre "
- + "Zustimmung zur Speicherung und Verarbeitung Ihrer Daten zum Zweck des "
- + "hochschulübergreifenden VM-Austauschs einzuholen. Die dort angegebenen "
- + "Informationen stehen unter der Verwaltung des bwLehrpool-Teams in "
- + "Freiburg.\n\n"
- + "Wenn Sie eine VM auf den öffentlichen Speicher hochladen, wird die VM "
- + "sowie damit verknüpfte Metadaten (Name des Besitzers/Erstellers, "
- + "Zeitpunkt der Erstellung und letzten Änderung) auf den zentralen Server "
- + "des bwLehrpool-Teams in Freiburg übertragen. Auch Nutzer anderer an "
- + "bwLehrpool teilnehmenden Hochschulen können nun Ihre VM sowie die damit "
- + "verbundenen (Kontakt-)Daten einsehen.\n\n"
- + "Wie lange werden Daten gespeichert?\n"
- + "-----------------------------------------------------\n"
- + "Informationen werden gespeichert, bis sie nicht mehr benötigt werden, "
- + "um die notwendige Funktionalität bereitzustellen. Dies hängt auch von "
- + "Faktoren wie der Art der Informationen, warum sie gesammelt und "
- + "verarbeitet werden sowie den relevanten rechtlichen oder betrieblichen "
- + "Speicherbedürfnissen ab.\n\n"
- + "Wohin kann ich mich bei Fragen wenden?\n"
- + "-----------------------------------------------------\n"
- + "Kontaktieren Sie als erstes Ihr Rechenzentrum. In der Regel wird dort "
- + "der Satellitenserver, mit dem sich Ihre bwLehrpool-Suite standardmäßig "
- + "verbindet, betrieben. Falls Sie dort keinen Ansprechpartner finden, "
- + "können Sie sich an das Entwickler-Team von bwLehrpool "
- + "(bwlehrpool@hs-offenburg.de) wenden. \n\n";
+ private final static Logger LOGGER = Logger.getLogger(PrivacyNoticeWindow.class);
final PrivacyNoticeWindow me = this;
+ private static String PRIVACY_NOTICE_MD5 = null;
+ private static String PRIVACY_NOTICE_CONTENT = null;
+
+ static {
+ try (InputStream noticeStream = ResourceLoader.getStream("/txt/privacy_notice")) {
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ byte[] content = IOUtils.toByteArray(noticeStream);
+ md.update(content);
+ byte[] md5 = md.digest();
+ PRIVACY_NOTICE_CONTENT = new String(content, StandardCharsets.UTF_8);
+ PRIVACY_NOTICE_MD5 = DatatypeConverter.printHexBinary(md5);
+ } catch (IOException | NoSuchAlgorithmException e) {
+ LOGGER.error("Failed to get hash of privacy_notice: ", e);
+ }
+ }
+
public PrivacyNoticeWindow(Frame modalParent) {
super(modalParent, shouldBeShown());
// Set the actual text
- setNoticeText(notice);
+ setNoticeText(PRIVACY_NOTICE_CONTENT);
// function for continue button
btnContinue.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// save the agreement to config
- Config.setPrivacyAgreement(PRIVACY_VERSION);
+ Config.setPrivacyAgreement(PRIVACY_NOTICE_MD5);
me.dispose();
}
});
}
public static boolean shouldBeShown() {
- return Config.getPrivacyAgreement() < PRIVACY_VERSION;
+ return !Config.getPrivacyAgreement().equals(PRIVACY_NOTICE_MD5);
}
public static void open(Frame modalParent) {