From 1df02218e9ed84ea6f942f95a649b9ec07548857 Mon Sep 17 00:00:00 2001 From: wurmc Date: Fri, 8 Jun 2018 18:41:48 +0200 Subject: [PATCH 1/7] feature: added legal notice and privacy and corrected translation of impressum --- CHANGELOG.md | 1 + api/src/controllers/ConfigController.ts | 2 +- app/webFrontend/src/app/app-routing.module.ts | 5 ++ app/webFrontend/src/app/app.component.html | 4 + app/webFrontend/src/app/app.module.ts | 2 + .../src/app/imprint/imprint.component.html | 38 +++++++- .../src/app/privacy/privacy.component.html | 87 +++++++++++++++++++ .../src/app/privacy/privacy.component.scss | 0 .../src/app/privacy/privacy.component.spec.ts | 25 ++++++ .../src/app/privacy/privacy.component.ts | 23 +++++ app/webFrontend/src/assets/i18n/de.json | 4 +- app/webFrontend/src/assets/i18n/en.json | 8 +- 12 files changed, 193 insertions(+), 6 deletions(-) create mode 100644 app/webFrontend/src/app/privacy/privacy.component.html create mode 100644 app/webFrontend/src/app/privacy/privacy.component.scss create mode 100644 app/webFrontend/src/app/privacy/privacy.component.spec.ts create mode 100644 app/webFrontend/src/app/privacy/privacy.component.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index b72386f08..0572bf6f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added more EN/DE translation [#753](https://github.com/utetrapp/geli/issues/753) - Use i18n for new course view [#763](https://github.com/utetrapp/geli/pull/763) - Added service for FileIcon [#607](https://github.com/utetrapp/geli/issues/607) +- Added legal notice and privacy declaration [#768](https://github.com/utetrapp/geli/issues/768) ### Changed - rework existing translation diff --git a/api/src/controllers/ConfigController.ts b/api/src/controllers/ConfigController.ts index 71ba93af2..a7a27f754 100644 --- a/api/src/controllers/ConfigController.ts +++ b/api/src/controllers/ConfigController.ts @@ -11,7 +11,7 @@ import {Config} from '../models/Config'; import passportJwtMiddleware from '../security/passportJwtMiddleware'; const publicConfigs = [ - new RegExp('imprint|infoBox'), + new RegExp('imprint|infoBox|privacy'), new RegExp('downloadMaxFileSize') ]; diff --git a/app/webFrontend/src/app/app-routing.module.ts b/app/webFrontend/src/app/app-routing.module.ts index 34b6493a8..a26b99d6a 100644 --- a/app/webFrontend/src/app/app-routing.module.ts +++ b/app/webFrontend/src/app/app-routing.module.ts @@ -7,6 +7,7 @@ import {AboutComponent} from './about/about.component'; import {ResetComponent} from './auth/reset/reset.component'; import {RouterModule, Routes} from '@angular/router'; import {ImprintComponent} from './imprint/imprint.component'; +import {PrivacyComponent} from './privacy/privacy.component'; import {UserSettingsComponent} from './user/user-settings/user-settings.component'; import {AuthGuardService} from './shared/services/auth-guard.service'; import {ActivationResendComponent} from './auth/activation-resend/activation-resend.component'; @@ -41,6 +42,10 @@ const routes: Routes = [ path: 'imprint', component: ImprintComponent }, + { + path: 'privacy', + component: PrivacyComponent + }, { path: 'userSettings', component: UserSettingsComponent, diff --git a/app/webFrontend/src/app/app.component.html b/app/webFrontend/src/app/app.component.html index 0fac495f9..4e2488406 100644 --- a/app/webFrontend/src/app/app.component.html +++ b/app/webFrontend/src/app/app.component.html @@ -59,6 +59,10 @@ info {{ 'mainMenu.imprint' | translate }} + - + From 952e653300c61871120dcdfba0677082a5f3af01 Mon Sep 17 00:00:00 2001 From: wurmc Date: Thu, 14 Jun 2018 11:02:27 +0200 Subject: [PATCH 3/7] feature: corrected privacy note --- .../src/app/privacy/privacy.component.html | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/webFrontend/src/app/privacy/privacy.component.html b/app/webFrontend/src/app/privacy/privacy.component.html index 1d4b10373..2a3b31aaa 100644 --- a/app/webFrontend/src/app/privacy/privacy.component.html +++ b/app/webFrontend/src/app/privacy/privacy.component.html @@ -11,13 +11,13 @@

Allgemeine Vorbemerkungen

Verantwortung und Zuständigkeiten

-

Für den Betrieb sowie die Richtigkeit und Aktualität der Informationen wird keine Gewähr übernommen. Die ???Abteilung IT-Dienste und -Anwendungen??? des Fachbereichs Informatik der Hochschule Darmstadt ist für den Betrieb des Servers zuständig. Für die Organisation und Inhalte der Seite sind die jeweiligen Redakteure verantwortlich. Der ??Fachbereich Informatik?? hat die allgemeine inhaltliche Verantwortung und entscheidet in Zweifelsfällen über die Zulässigkeit der Daten.

+

Für den Betrieb sowie die Richtigkeit und Aktualität der Informationen wird keine Gewähr übernommen. Die IT-Services des Fachbereichs Informatik der Hochschule Darmstadt ist für den Betrieb des Servers zuständig. Für die Organisation und Inhalte der Seite sind die jeweiligen Redakteure verantwortlich. Der Fachbereich Informatik hat die allgemeine inhaltliche Verantwortung und entscheidet in Zweifelsfällen über die Zulässigkeit der Daten.

Umgang mit Daten

Der Fachbereich Informatik nimmt den Schutz von personenbezogenen Daten sehr ernst. Wir verarbeiten personenbezogene Daten unter Beachtung der geltenden datenschutzrechtlichen Bestimmungen. Es gelten insbesonderedie EU-Datenschutzgrundverordnung (DS-GVO), das Hessische Datenschutz- und Informationsfreiheitsgesetz (HDSIG) und das Telemediengesetz (TMG).

Im Folgenden unterrichten wir Sie über Art, Umfang und Zwecke der Erhebung und Verwendung personenbezogener Daten.

-

Ihre Daten werden von uns weder veröffentlicht (ausgenommen Lehrende hinsichtlich Vorlesungsverzeichnis und Stundenpläne), noch unberechtigt an Dritte weitergegeben. Wir verarbeiten Ihre Daten ausschließlich zum Zwecke der ???Organisation des Lehr- und Prüfungsbetriebs???.

+

Ihre Daten werden von uns weder veröffentlicht (ausgenommen Lehrende hinsichtlich Vorlesungsverzeichnis und Stundenpläne), noch unberechtigt an Dritte weitergegeben. Wir verarbeiten Ihre Daten ausschließlich zum Zwecke der Organisation des Lehrbetriebs.

1. Datenerhebung und -verarbeitung bei Zugriffen aus dem Internet

@@ -25,20 +25,20 @@

1. Datenerhebung und -verarbeitung bei Zugriffen aus dem Internet

Wenn Sie unsere Webseiten besuchen, speichern unsere Webserver automatisch jeden Zugriff in einer Protokolldatei.

Diese Daten werden getrennt von anderen Daten, die Sie im Rahmen der Nutzung unseres Angebotes eingeben, gespeichert. Eine Zuordnung dieser Daten zu einer bestimmten Person wird nicht vorgenommen.

Folgende Daten werden erfasst:

-
  • IP-Adresse ???(anonymisiert)???
  • Datum und Uhrzeit des Zugriffs
  • URL der abgerufenen Seite
  • -
  • ???Browsertyp, Browserversion und Betriebssystem
  • -
  • ???Übertragene Datenmenge
  • -
  • ???Zugriffsstatus des Web-Servers (Datei übertragen, Datei nicht gefunden, Kommando nicht ausgeführt, etc.)
  • +
  • Browsertyp, Browserversion und Betriebssystem
  • +
  • Übertragene Datenmenge
  • +
  • Bewegungsprofil (im Fehlerfall)
  • +
  • Zugriffsstatus des Web-Servers (Datei übertragen, Datei nicht gefunden, Kommando nicht ausgeführt, etc.)
  • Diese Daten sind nicht bestimmten Personen zugeordnet. Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen. Wir behalten uns jedoch vor, diese Daten nachträglich zu prüfen, wenn uns konkrete Anhaltspunkte für eine missbräuchliche Nutzung oder ein Verdacht auf eine Fehlfunktion des Systems bekannt werden.

    -

    Wir speichern weitere Daten aus dem laufenden Betrieb zum Zweck der Fehlersuche und der Abwehr von Angriffen und missbräuchlicher Benutzung ("error log"). Wir tun dies um die notwendige Datensicherheit zu gewährleisten. Diese Daten sind nur den Administratoren des System zugänglich; wir geben sie nicht an Dritte weiter. Diese Daten werden automatisch nach 30 Tagen oder am Ende des Folgemonats gelöscht.

    +

    Wir speichern weitere Daten aus dem laufenden Betrieb zum Zweck der Fehlersuche und der Abwehr von Angriffen und missbräuchlicher Benutzung ("error log"). Wir tun dies um die notwendige Datensicherheit zu gewährleisten. Diese Daten sind nur den Administratoren des Systems zugänglich; folgende Daten werden im Fehlerfall anonymisiert an sentry weitergegeben: Browser, Betriebssystem, anonymisierte Fehlermeldungen und das anonymisierte Bewegungsprofil innerhalb der Seite.

    Rechtsgrundlage der Verarbeitung ist Art. 6 Abs. 1 b) der DS-GVO.

    2. Nutzung und Weitergabe personenbezogener Daten

    -

    Für die Nutzung unserer Dienste sind verschiedene personenbezogene Daten erforderlich. Einen Teil dieser Daten (??Matrikelnummer, Name, Vorname und E-Mail Adresse???) beziehen wir aus dem OBS(obs.fbi.h-da.de) des Fachbereichs Informatik.

    +

    Für die Nutzung unserer Dienste sind verschiedene personenbezogene Daten erforderlich. Einen Teil dieser Daten (Matrikelnummer, Name, Vorname und E-Mail Adresse) beziehen wir aus dem OBS(obs.fbi.h-da.de) des Fachbereichs Informatik.

    Jegliche Nutzung Ihrer personenbezogenen Daten erfolgt nur zu den genannten Zwecken und in dem zur Erreichung dieser Zwecke erforderlichen Umfang. Keine dieser Daten werden ohne vorherige Einwilligung des Nutzers an Dritte weitergegeben.

    Die übermittelten Daten werden in einer Datenbank gespeichert, die nur Administratoren zugänglich ist.

    Übermittlungen personenbezogener Daten an staatliche Behörden erfolgen nur im Rahmen zwingender nationaler Rechtsvorschriften.

    @@ -50,7 +50,6 @@

    3. Cookies

    Unsere Webseiten verwenden so genannte Cookies. Cookies richten auf Ihrem Rechner keinen Schaden an und enthalten keine Viren. Cookies sind kleine Textdateien, die vom Browser auf Ihrem Rechner gespeichert werden.

    Wir verwenden so genannte "Session-Cookies" um Ihnen Ihre Seitenaufrufe nach einem Login zuordnen zu können. Diese Cookies sind notwendig für die sichere Funktion und werden beim Logout automatisch ungültig (Sie sollten sich daher am Ende explizit ausloggen und nicht nur den Browser schließen um bestmögliche Sicherheit zu erzielen). Außerdem speichern wir Ihre Auswahl für Mobile/Desktop, Sprache, Schriftgröße, Design und Layout als Cookies in Ihrem Browser um ein einheitliches Erscheinungsbild der verschiedenen Seiten zu gewährleisten. Diese Cookies sind ein Jahr lang gültig; Sie können sie aber jederzeit löschen oder überschreiben.

    Unsere Webseiten speichern keine Cookies von Dritten ("third party cookies", "Drittanbieter").

    -

    ???Zum Einbinden von Videos nutzen wir den externen Anbieter YouTube. Weitere Informationen zur offiziellen Datenschutz-Politik von YouTube finden Sie hier: www.youtube.com/t/privacy_at_youtube???

    Sie können das automatische Löschen der Cookies beim Schließen des Browser aktivieren; die Funktionalität dieser Website wird dadurch nicht eingeschränkt.

    Rechtsgrundlage der Verarbeitung sind Art. 6 Abs. 1 b) DS-GVO.

    From 36a4c1b6274a4aead36fa21f2127419369ec4850 Mon Sep 17 00:00:00 2001 From: wurmc Date: Thu, 14 Jun 2018 12:28:13 +0200 Subject: [PATCH 4/7] feature: changed imprint variable into legalnotice --- api/src/controllers/ConfigController.ts | 20 +++++++++---------- api/test/integration/config.ts | 12 +++++------ .../src/app/admin/admin.component.html | 4 ++-- app/webFrontend/src/app/app-routing.module.ts | 6 +++--- app/webFrontend/src/app/app.component.html | 4 ++-- app/webFrontend/src/app/app.module.ts | 4 ++-- .../legalnotice.component.html} | 2 +- .../legalnotice.component.scss} | 0 .../legalnotice.component.spec.ts} | 12 +++++------ .../legalnotice.component.ts} | 10 +++++----- .../legalnotice.module.ts} | 6 +++--- .../services/imprint-and-info.service.ts | 2 +- app/webFrontend/src/assets/i18n/de.json | 4 ++-- app/webFrontend/src/assets/i18n/en.json | 4 ++-- 14 files changed, 45 insertions(+), 45 deletions(-) rename app/webFrontend/src/app/{imprint/imprint.component.html => legalnotice/legalnotice.component.html} (96%) rename app/webFrontend/src/app/{imprint/imprint.component.scss => legalnotice/legalnotice.component.scss} (100%) rename app/webFrontend/src/app/{imprint/imprint.component.spec.ts => legalnotice/legalnotice.component.spec.ts} (53%) rename app/webFrontend/src/app/{imprint/imprint.component.ts => legalnotice/legalnotice.component.ts} (71%) rename app/webFrontend/src/app/{imprint/imprint.module.ts => legalnotice/legalnotice.module.ts} (70%) diff --git a/api/src/controllers/ConfigController.ts b/api/src/controllers/ConfigController.ts index a7a27f754..b94031f9a 100644 --- a/api/src/controllers/ConfigController.ts +++ b/api/src/controllers/ConfigController.ts @@ -11,7 +11,7 @@ import {Config} from '../models/Config'; import passportJwtMiddleware from '../security/passportJwtMiddleware'; const publicConfigs = [ - new RegExp('imprint|infoBox|privacy'), + new RegExp('legalnotice|infoBox|privacy'), new RegExp('downloadMaxFileSize') ]; @@ -32,15 +32,15 @@ export class ConfigController { * @apiName GetConfigPublic * @apiGroup Config * - * @apiParam {String} id Config name (e.g. imprint). + * @apiParam {String} id Config name (e.g. legalnotice). * * @apiSuccess {Config} config Public config. * * @apiSuccessExample {json} Success-Response: * { - * "name":"imprint", + * "name":"legalnotice", * "updatedAt": "2018-03-20T21:04:41.696Z", - * "value":"This will show the imprint.", + * "value":"This will show the legalnotice.", * "__v": 0, * "createdAt": "2018-03-20T21:04:41.696Z" * } @@ -71,7 +71,7 @@ export class ConfigController { * @apiGroup Config * @apiPermission admin * - * @apiParam {String} id Config name (e.g. imprint). + * @apiParam {String} id Config name (e.g. legalnotice). * @apiParam {Object} data New data. * * @apiSuccess {Config} config Updated config. @@ -93,9 +93,9 @@ export class ConfigController { * "_doc": { * "createdAt": "2018-03-20T21:04:41.696Z", * "__v": 0, - * "value": "This will show the imprint.", + * "value": "This will show the legalnotice.", * "updatedAt": "2018-03-20T21:04:41.696Z", - * "name": "imprint", + * "name": "legalnotice", * "_id": {...} * }, * "$init": true @@ -125,15 +125,15 @@ export class ConfigController { * @apiGroup Config * @apiPermission admin * - * @apiParam {String} id Config name (e.g. imprint). + * @apiParam {String} id Config name (e.g. legalnotice). * * @apiSuccess {Config} config Config. * * @apiSuccessExample {json} Success-Response: * { - * "name":"imprint", + * "name":"legalnotice", * "updatedAt": "2018-03-20T21:04:41.696Z", - * "value":"This will show the imprint.", + * "value":"This will show the legalnotice.", * "__v": 0, * "createdAt": "2018-03-20T21:04:41.696Z" * } diff --git a/api/test/integration/config.ts b/api/test/integration/config.ts index 03410f0ec..0fbb24f1e 100644 --- a/api/test/integration/config.ts +++ b/api/test/integration/config.ts @@ -26,23 +26,23 @@ describe('Config', () => { res.body.name.should.be.equal('UnauthorizedError'); }); - it('should pass (imprint)', async () => { + it('should pass (legalnotice)', async () => { const res = await chai.request(app) - .get(`${BASE_URL}/public/imprint`) + .get(`${BASE_URL}/public/legalnotice`) .catch(err => err.response); res.status.should.be.equal(200); - res.body.name.should.be.equal('imprint'); + res.body.name.should.be.equal('legalnotice'); }); }); - describe(`PUT ${BASE_URL}/imprint`, () => { + describe(`PUT ${BASE_URL}/legalnotice`, () => { it('should pass', async () => { const admin = await FixtureUtils.getRandomAdmin(); const res = await chai.request(app) - .put(`${BASE_URL}/imprint`) + .put(`${BASE_URL}/legalnotice`) .set('Authorization', `JWT ${JwtUtils.generateToken(admin)}`) - .send({data: '# Imprint'}); + .send({data: '# Legalnotice'}); res.status.should.be.equal(200); }); }); diff --git a/app/webFrontend/src/app/admin/admin.component.html b/app/webFrontend/src/app/admin/admin.component.html index 89500b3f5..874e92819 100644 --- a/app/webFrontend/src/app/admin/admin.component.html +++ b/app/webFrontend/src/app/admin/admin.component.html @@ -4,8 +4,8 @@

    {{ 'common.administration' | translate }}

    - -