diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java')
-rwxr-xr-x | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/PrivacyNoticeWindow.java | 98 |
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) { |