Add sponsorship privacy police (#935)

This commit is contained in:
andig 2021-04-28 21:33:46 +02:00 • committed by GitHub
parent 0dc8e25d2f
commit bd27ab61f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 337 additions and 118 deletions

View file

@ -2,127 +2,130 @@
<html lang="en" class="h-100">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>evcc cloud</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>evcc Sponsorship</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous">
</script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous">
</script>
<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
</style>
<style>
/* Custom default button */
.btn-secondary,
.btn-secondary:hover,
.btn-secondary:focus {
color: #333;
text-shadow: none;
/* Prevent inheritance from `body` */
}
<style>
/* Custom default button */
.btn-secondary,
.btn-secondary:hover,
.btn-secondary:focus {
color: #333;
text-shadow: none;
/* Prevent inheritance from `body` */
}
body {
text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5);
box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5);
}
body {
text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5);
box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5);
}
.cover-container {
max-width: 42em;
}
.cover-container {
max-width: 42em;
}
.nav-masthead .nav-link {
padding: .25rem 0;
font-weight: 700;
color: rgba(255, 255, 255, .5);
background-color: transparent;
border-bottom: .25rem solid transparent;
}
.nav-masthead .nav-link {
padding: .25rem 0;
font-weight: 700;
color: rgba(255, 255, 255, .5);
background-color: transparent;
border-bottom: .25rem solid transparent;
}
.nav-masthead .nav-link:hover,
.nav-masthead .nav-link:focus {
border-bottom-color: rgba(255, 255, 255, .25);
}
.nav-masthead .nav-link:hover,
.nav-masthead .nav-link:focus {
border-bottom-color: rgba(255, 255, 255, .25);
}
.nav-masthead .nav-link+.nav-link {
margin-left: 1rem;
}
.nav-masthead .nav-link+.nav-link {
margin-left: 1rem;
}
.nav-masthead .active {
color: #fff;
border-bottom-color: #fff;
}
.nav-masthead .active {
color: #fff;
border-bottom-color: #fff;
}
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
</head>
<body class="d-flex h-100 text-center text-white bg-dark">
<div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
<div class="cover-container d-flex w-100 h-100 p-3 mx-auto flex-column">
<header class="mb-auto">
<div>
<h3 class="float-md-start mb-0">evcc cloud</h3>
<nav class="nav nav-masthead justify-content-center float-md-end">
<a class="nav-link active" aria-current="page" href="/">Home</a>
<a class="nav-link" href="#">Impressum</a>
</nav>
</div>
</header>
<header class="mb-auto">
<div>
<h3 class="float-md-start mb-0">evcc Sponsorship</h3>
<nav class="nav nav-masthead justify-content-center float-md-end">
<a class="nav-link active" aria-current="page" href="/">Home</a>
<a class="nav-link" href="/privacy">Impressum & Datenschutz</a>
</nav>
</div>
</header>
<main class="px-3">
{{if .Content}}
{{.Content}}
{{else}}
<h1>Willkommen</h1>
<p class="lead">
evcc cloud erfordert eine einmalige Anmeldung um evcc cloud mit dem Github Konto des evcc Sponsors zu
verknüpfen. Mit der Verknüpfung wird das Registrierungstoken erzeugt.
</p>
<p class="lead">
Die evcc cloud speichert keine Benutzerdaten. Alle Daten werden weiterhin lokal verarbeitet.
</p>
<p class="lead">
<a href="/login" class="btn btn-lg btn-secondary fw-bold border-white bg-white">Anmelden</a>
</p>
{{end}}
</main>
<main class="px-3">
{{if .Content}}
{{.Content}}
{{else}}
<h1>Willkommen</h1>
<p class="lead">
Die Freischaltung der Sonderfunktionen für evcc Sponsoren erfordert eine einmalige Anmeldung um evcc mit dem
Github Konto des evcc Sponsors zu verknüpfen. Mit der Verknüpfung wird das Registrierungstoken erzeugt.
</p>
<p class="lead">
Das Registrierungstoken gibt Zugang zu den folgenden Funktionen:
<p>Nutzung des evcc-soc Moduls mit OpenWB</p>
<p>Nutzung des evcc Easee Moduls</p>
</p>
<p class="lead">
<a href="/login" class="btn btn-lg btn-secondary fw-bold border-white bg-white">Anmelden</a>
</p>
{{end}}
</main>
<footer class="mt-auto text-white-50">
<p>Cover template by <a href="https://twitter.com/mdo" class="text-white">@mdo</a>.</p>
</footer>
<footer class="mt-auto text-white-50">
<p>Cover template by <a href="https://twitter.com/mdo" class="text-white">@mdo</a>.</p>
</footer>
</div>
</div>
</body>
</html>
</html>

220
soc/server/ui/privacy.html Normal file
View file

@ -0,0 +1,220 @@
<!doctype html>
<html lang="en" class="h-100">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Impressum und Datenschutzerklärung</title>
</head>
<body>
<h1>Impressum</h1>
<h2>Diensteanbieter</h2>
<p>Andreas Götz</p>
<p>Gubiner Str. 15</p>
<p>30880 Laatzen</p>
<h3>Kontaktmöglichkeiten</h3>
<p>E-Mail-Adresse: <a href="mailto:info@evcc.io">info@evcc.io</a></p>
<h1>Datenschutzerklärung</h1>
<h2>Einleitung</h2>
<p>Mit der folgenden Datenschutzerklärung möchten wir Sie darüber aufklären, welche Arten Ihrer personenbezogenen
Daten (nachfolgend auch kurz als "Daten“ bezeichnet) wir zu welchen Zwecken und in welchem Umfang verarbeiten. Die
Datenschutzerklärung gilt für alle von uns durchgeführten Verarbeitungen personenbezogener Daten, sowohl im
Rahmen der Erbringung unserer Leistungen als auch insbesondere auf unseren Webseiten, in mobilen Applikationen sowie
innerhalb externer Onlinepräsenzen, wie z.B. unserer Social-Media-Profile (nachfolgend zusammenfassend
bezeichnet als "Onlineangebot“).</p>
<p>Die verwendeten Begriffe sind nicht geschlechtsspezifisch.</p>
<p>Stand: 26. April 2021</p>
<h2>Inhaltsübersicht</h2>
<ul class="index">
<li><a class="index-link" href="#m14">Einleitung</a></li>
<li><a class="index-link" href="#m3">Verantwortlicher</a></li>
<li><a class="index-link" href="#mOverview">Übersicht der Verarbeitungen</a></li>
<li><a class="index-link" href="#m13">Maßgebliche Rechtsgrundlagen</a></li>
<li><a class="index-link" href="#m27">Sicherheitsmaßnahmen</a></li>
<li><a class="index-link" href="#m25">Übermittlung von personenbezogenen Daten</a></li>
<li><a class="index-link" href="#m24">Datenverarbeitung in Drittländern</a></li>
<li><a class="index-link" href="#m317">Geschäftliche Leistungen</a></li>
<li><a class="index-link" href="#m29">Bereitstellung des Onlineangebotes</a></li>
<li><a class="index-link" href="#m12">Löschung von Daten</a></li>
<li><a class="index-link" href="#m15">Änderung und Aktualisierung der Datenschutzerklärung</a></li>
<li><a class="index-link" href="#m10">Rechte der betroffenen Personen</a></li>
<li><a class="index-link" href="#m42">Begriffsdefinitionen</a></li>
</ul>
<h2 id="m3">Verantwortlicher</h2>
<p>Andreas Götz<br>Gubiner Str. 15<br>30880 Laatzen</p>
<p>E-Mail-Adresse: <a href="mailto:info@evcc.io">info@evcc.io</a>.</p>
<h2 id="mOverview">Übersicht der Verarbeitungen</h2>
<p>Die nachfolgende Übersicht fasst die Arten der verarbeiteten Daten und die Zwecke ihrer Verarbeitung zusammen und
verweist auf die betroffenen Personen.</p>
<h3>Arten der verarbeiteten Daten</h3>
<ul>
<li>Bestandsdaten (Github Profil und Sponsorship Level).</li>
<li>Meta-/Kommunikationsdaten (IP-Adressen, Hostnamen).</li>
<li>Vertragsdaten (Fahrzeugtyp und Zugangsdaten für Fahrzeug-APIs).</li>
</ul>
<h3>Kategorien betroffener Personen</h3>
<ul>
<li>Interessenten</li>
<li>Kunden</li>
<li>Nutzer</li>
</ul>
<h3>Zwecke der Verarbeitung</h3>
<ul>
<li>Bereitstellung unseres Onlineangebotes.</li>
<li>Verwaltung und Beantwortung von Anfragen.</li>
</ul>
<h3 id="m13">Maßgebliche Rechtsgrundlagen</h3>
<p>Im Folgenden erhalten Sie eine Übersicht der Rechtsgrundlagen der DSGVO, auf deren Basis wir personenbezogenen
Daten verarbeiten. Bitte nehmen Sie zur Kenntnis, dass neben den Regelungen der DSGVO nationale Datenschutzvorgaben
in Ihrem bzw. unserem Wohn- oder Sitzland gelten können. Sollten ferner im Einzelfall speziellere Rechtsgrundlagen
maßgeblich sein, teilen wir Ihnen diese in der Datenschutzerklärung mit.</p>
<ul>
<li><strong>Einwilligung (Art. 6 Abs. 1 S. 1 lit. a. DSGVO)</strong> - Die betroffene Person hat ihre
Einwilligung in die Verarbeitung der sie betreffenden personenbezogenen Daten für einen spezifischen Zweck oder
mehrere bestimmte Zwecke gegeben.</li>
<li><strong>Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO)</strong> - Die
Verarbeitung ist für die Erfüllung eines Vertrags, dessen Vertragspartei die betroffene Person ist, oder zur
Durchführung vorvertraglicher Maßnahmen erforderlich, die auf Anfrage der betroffenen Person erfolgen.</li>
<li><strong>Rechtliche Verpflichtung (Art. 6 Abs. 1 S. 1 lit. c. DSGVO)</strong> - Die Verarbeitung ist zur
Erfüllung einer rechtlichen Verpflichtung erforderlich, der der Verantwortliche unterliegt.</li>
<li><strong>Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO)</strong> - Die Verarbeitung ist zur
Wahrung der berechtigten Interessen des Verantwortlichen oder eines Dritten erforderlich, sofern nicht die
Interessen oder Grundrechte und Grundfreiheiten der betroffenen Person, die den Schutz personenbezogener Daten
erfordern, überwiegen.</li>
</ul>
<p><strong>Nationale Datenschutzregelungen in Deutschland</strong>: Zusätzlich zu den Datenschutzregelungen der
Datenschutz-Grundverordnung gelten nationale Regelungen zum Datenschutz in Deutschland. Hierzu gehört
insbesondere das Gesetz zum Schutz vor Missbrauch personenbezogener Daten bei der Datenverarbeitung
(Bundesdatenschutzgesetz – BDSG). Das BDSG enthält insbesondere Spezialregelungen zum Recht auf Auskunft, zum Recht
auf Löschung, zum Widerspruchsrecht, zur Verarbeitung besonderer Kategorien personenbezogener Daten, zur
Verarbeitung für andere Zwecke und zur Übermittlung sowie automatisierten Entscheidungsfindung im Einzelfall
einschließlich Profiling.
Des Weiteren regelt es die Datenverarbeitung für Zwecke des Beschäftigungsverhältnisses (§ 26 BDSG), insbesondere im
Hinblick auf die Begründung, Durchführung oder Beendigung von Beschäftigungsverhältnissen sowie die Einwilligung
von Beschäftigten. Ferner können Landesdatenschutzgesetze der einzelnen Bundesländer zur Anwendung gelangen.</p>
<h2 id="m27">Sicherheitsmaßnahmen</h2>
<p>Wir treffen nach Maßgabe der gesetzlichen Vorgaben unter Berücksichtigung des Stands der Technik, der
Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der
unterschiedlichen Eintrittswahrscheinlichkeiten und des Ausmaßes der Bedrohung der Rechte und Freiheiten
natürlicher Personen geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes
Schutzniveau zu gewährleisten.</p>
<p>Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten
durch Kontrolle des physischen und elektronischen Zugangs zu den Daten als auch des sie betreffenden Zugriffs, der
Eingabe, der Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren
eingerichtet, die eine Wahrnehmung von Betroffenenrechten, die Löschung von Daten und Reaktionen auf die
Gefährdung der Daten gewährleisten. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der
Entwicklung bzw. Auswahl von Hardware, Software sowie Verfahren entsprechend dem Prinzip des Datenschutzes, durch
Technikgestaltung und durch datenschutzfreundliche Voreinstellungen.</p>
<h2 id="m25">Übermittlung von personenbezogenen Daten</h2>
<p>Im Rahmen unserer Verarbeitung von personenbezogenen Daten kommt es vor, dass die Daten an andere Stellen,
Unternehmen, rechtlich selbstständige Organisationseinheiten oder Personen übermittelt oder sie ihnen gegenüber
offengelegt werden. Zu den Empfängern dieser Daten können z.B. mit IT-Aufgaben beauftragte Dienstleister oder
Anbieter von Diensten und Inhalten, die in eine Webseite eingebunden werden, gehören. In solchen Fall beachten
wir die gesetzlichen Vorgaben und schließen insbesondere entsprechende Verträge bzw. Vereinbarungen, die dem Schutz
Ihrer Daten dienen, mit den Empfängern Ihrer Daten ab.</p>
<h2 id="m24">Datenverarbeitung in Drittländern</h2>
<p>Sofern wir Daten in einem Drittland (d.h., außerhalb der Europäischen Union (EU), des Europäischen
Wirtschaftsraums (EWR)) verarbeiten oder die Verarbeitung im Rahmen der Inanspruchnahme von Diensten Dritter oder
der Offenlegung bzw. Übermittlung von Daten an andere Personen, Stellen oder Unternehmen stattfindet, erfolgt dies
nur im Einklang mit den gesetzlichen Vorgaben. </p>
<p>Vorbehaltlich ausdrücklicher Einwilligung oder vertraglich oder gesetzlich erforderlicher Übermittlung
verarbeiten oder lassen wir die Daten nur in Drittländern mit einem anerkannten Datenschutzniveau, vertraglichen
Verpflichtung durch sogenannte Standardschutzklauseln der EU-Kommission, beim Vorliegen von Zertifizierungen oder
verbindlicher internen Datenschutzvorschriften verarbeiten (Art. 44 bis 49 DSGVO, Informationsseite der
EU-Kommission: <a
href="https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection_de"
target="_blank">https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection_de</a>).
</p>
<h2 id="m29">Bereitstellung des Onlineangebotes</h2>
<p>Das Onlineangebote wird auf Servern von Prospect One (Karmelicka 5/5, Krakow, 31-133, Polen) betrieben. Wir
verweisen
auf die entsprechende <a href="https://appfleet.com/privacy-policy"> Datenschutzerklärung</a>
</p>
<p>
Wir verwenden Github für die Bereitstellung der Sponsoring Funktion sowie für die Generierung des Login Tokens.
Wir verweisen auf die entsprechende <a
href="https://docs.github.com/en/github/site-policy/github-privacy-statement"> Datenschutzerklärung</a>
</p>
<h2 id="m12">Löschung von Daten</h2>
<p>Die von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen Vorgaben gelöscht, sobald deren zur
Verarbeitung erlaubten Einwilligungen widerrufen werden oder sonstige Erlaubnisse entfallen (z.B., wenn der Zweck
der Verarbeitung dieser Daten entfallen ist oder sie für den Zweck nicht erforderlich sind).</p>
<p>Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind,
wird deren Verarbeitung auf diese Zwecke beschränkt. D.h., die Daten werden gesperrt und nicht für andere Zwecke
verarbeitet. Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen
oder deren Speicherung zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der
Rechte einer anderen natürlichen oder juristischen Person erforderlich ist.</p>
<p>Unsere Datenschutzhinweise können ferner weitere Angaben zu der Aufbewahrung und Löschung von Daten beinhalten,
die für die jeweiligen Verarbeitungen vorrangig gelten.</p>
<h2 id="m15">Änderung und Aktualisierung der Datenschutzerklärung</h2>
<p>Wir bitten Sie, sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die
Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich
machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung)
oder eine sonstige individuelle Benachrichtigung erforderlich wird.</p>
<p>Sofern wir in dieser Datenschutzerklärung Adressen und Kontaktinformationen von Unternehmen und Organisationen
angeben, bitten wir zu beachten, dass die Adressen sich über die Zeit ändern können und bitten die Angaben vor
Kontaktaufnahme zu prüfen.</p>
<h2 id="m10">Rechte der betroffenen Personen</h2>
<p>Ihnen stehen als Betroffene nach der DSGVO verschiedene Rechte zu, die sich insbesondere aus Art. 15 bis 21 DSGVO
ergeben:</p>
<ul>
<li><strong>Widerspruchsrecht: Sie haben das Recht, aus Gründen, die sich aus Ihrer besonderen Situation
ergeben, jederzeit gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten, die aufgrund von Art. 6
Abs. 1 lit. e oder f DSGVO erfolgt, Widerspruch einzulegen; dies gilt auch für ein auf diese Bestimmungen
gestütztes Profiling. Werden die Sie betreffenden personenbezogenen Daten verarbeitet, um Direktwerbung
zu betreiben, haben Sie das Recht, jederzeit Widerspruch gegen die Verarbeitung der Sie betreffenden
personenbezogenen Daten zum Zwecke derartiger Werbung einzulegen; dies gilt auch für das Profiling,
soweit es mit solcher Direktwerbung in Verbindung steht.</strong></li>
<li><strong>Widerrufsrecht bei Einwilligungen:</strong> Sie haben das Recht, erteilte Einwilligungen jederzeit
zu widerrufen.</li>
<li><strong>Auskunftsrecht:</strong> Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende
Daten verarbeitet werden und auf Auskunft über diese Daten sowie auf weitere Informationen und Kopie der
Daten entsprechend den gesetzlichen Vorgaben.</li>
<li><strong>Recht auf Berichtigung:</strong> Sie haben entsprechend den gesetzlichen Vorgaben das Recht, die
Vervollständigung der Sie betreffenden Daten oder die Berichtigung der Sie betreffenden unrichtigen Daten zu
verlangen.</li>
<li><strong>Recht auf Löschung und Einschränkung der Verarbeitung:</strong> Sie haben nach Maßgabe der
gesetzlichen Vorgaben das Recht, zu verlangen, dass Sie betreffende Daten unverzüglich gelöscht werden, bzw.
alternativ nach Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der Daten zu verlangen.</li>
<li><strong>Recht auf Datenübertragbarkeit:</strong> Sie haben das Recht, Sie betreffende Daten, die Sie uns
bereitgestellt haben, nach Maßgabe der gesetzlichen Vorgaben in einem strukturierten, gängigen und
maschinenlesbaren Format zu erhalten oder deren Übermittlung an einen anderen Verantwortlichen zu fordern.
</li>
<li><strong>Beschwerde bei Aufsichtsbehörde:</strong> Sie haben unbeschadet eines anderweitigen
verwaltungsrechtlichen oder gerichtlichen Rechtsbehelfs das Recht auf Beschwerde bei einer Aufsichtsbehörde,
insbesondere in dem Mitgliedstaat ihres gewöhnlichen Aufenthaltsorts, ihres Arbeitsplatzes oder des Orts des
mutmaßlichen Verstoßes, wenn Sie der Ansicht sind, dass die Verarbeitung der Sie betreffenden
personenbezogenen Daten gegen die Vorgaben der DSGVO verstößt.</li>
</ul>
<h2 id="m42">Begriffsdefinitionen</h2>
<p>In diesem Abschnitt erhalten Sie eine Übersicht über die in dieser Datenschutzerklärung verwendeten
Begrifflichkeiten. Viele der Begriffe sind dem Gesetz entnommen und vor allem im Art. 4 DSGVO definiert. Die
gesetzlichen Definitionen sind verbindlich. Die nachfolgenden Erläuterungen sollen dagegen vor allem dem
Verständnis dienen. Die Begriffe sind alphabetisch sortiert.</p>
<ul class="glossary">
<li><strong>Personenbezogene Daten:</strong> "Personenbezogene Daten“ sind alle Informationen, die sich auf eine
identifizierte oder identifizierbare natürliche Person (im Folgenden "betroffene Person“) beziehen; als
identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels
Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B.
Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen,
physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser
natürlichen Person sind. </li>
<li><strong>Verantwortlicher:</strong> Als "Verantwortlicher“ wird die natürliche oder juristische Person,
Behörde, Einrichtung oder andere Stelle, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der
Verarbeitung von personenbezogenen Daten entscheidet, bezeichnet. </li>
<li><strong>Verarbeitung:</strong> "Verarbeitung" ist jeder mit oder ohne Hilfe automatisierter Verfahren
ausgeführte Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff
reicht weit und umfasst praktisch jeden Umgang mit Daten, sei es das Erheben, das Auswerten, das Speichern,
das Übermitteln oder das Löschen. </li>
</ul>
<p class="seal"><a href="https://datenschutz-generator.de/?l=de"
title="Rechtstext von Dr. Schwenke - für weitere Informationen bitte anklicken." target="_blank"
rel="noopener noreferrer nofollow">Erstellt mit kostenlosem Datenschutz-Generator.de von Dr. Thomas
Schwenke</a>
</p>
</body>
</html>

View file

@ -24,6 +24,9 @@ import (
//go:embed index.html
var indexHtml string
//go:embed privacy.html
var privacyHtml string
var (
// login ui and callback
redirectURL = util.Getenv("REDIRECT_URL")
@ -37,7 +40,7 @@ var (
)
var (
indexTpl *template.Template
indexTpl, privacyTpl *template.Template
oauthState = randomString()
oauthConfig *oauth2.Config
@ -71,6 +74,7 @@ func init() {
}
indexTpl = template.Must(template.New("index").Parse(indexHtml))
privacyTpl = template.Must(template.New("privacy").Parse(privacyHtml))
}
func randomString() string {
@ -85,20 +89,11 @@ func randomString() string {
}
func handleMain(w http.ResponseWriter, r *http.Request) {
_ = indexTpl.Execute(w, map[string]interface{}{
"Content": template.HTML(`
<h1>Willkommen</h1>
<p class="lead">
evcc cloud erfordert eine einmalige Anmeldung um evcc cloud mit dem Github Konto des evcc Sponsors zu
verknüpfen. Mit der Verknüpfung wird das Registrierungstoken erzeugt.
</p>
<p class="lead">
Die evcc cloud speichert keine Benutzerdaten. Alle Daten werden weiterhin lokal verarbeitet.
</p>
<p class="lead">
<a href="/login" class="btn btn-lg btn-secondary fw-bold border-white bg-white">Anmelden</a>
</p>`),
})
_ = indexTpl.Execute(w, nil)
}
func handlePrivacy(w http.ResponseWriter, r *http.Request) {
_ = privacyTpl.Execute(w, nil)
}
func templateError(w http.ResponseWriter, r *http.Request, err string) {
@ -140,7 +135,7 @@ func handleCallback(w http.ResponseWriter, r *http.Request) {
_ = indexTpl.Execute(w, map[string]interface{}{
"Content": template.HTML(`
<h1>Inaktiv</h1>
<p class="lead">Github Sponsorship für evcc ist inaktiv. Um evcc cloud zu nutzen, ist es notwendig, evcc zu unterstützen.</p>
<p class="lead">Github Sponsorship für evcc ist inaktiv. Um erweiterte Funktionen zu nutzen, ist es notwendig, evcc zu unterstützen.</p>
<p class="lead">evcc bei Github <a href="https://github.com/sponsors/andig" class="text-warning">unterstützen</a>.</p>`),
})
return
@ -155,7 +150,7 @@ func handleCallback(w http.ResponseWriter, r *http.Request) {
_ = indexTpl.Execute(w, map[string]interface{}{
"Content": template.HTML(fmt.Sprintf(`
<h1>Aktiv</h1>
<p class="lead">Github Sponsorship für evcc ist aktiv. Der folgende Token kann für den Zugriff auf evcc cloud genutzt werden.</p>
<p class="lead">Github Sponsorship für evcc ist aktiv. Das folgende Registrierungstoken kann für den Zugriff auf evcc genutzt werden.</p>
<p class="lead">Der Code ist %d Tage gültig und kann jederzeit neu erzeugt werden.</p>
<p class="lead"><code>`+jwt+`</code></p>`, auth.TokenExpiry),
)})
@ -207,6 +202,7 @@ func getUserInfo(state string, code string) (*User, error) {
func Run() {
mux := &http.ServeMux{}
mux.HandleFunc("/", handleMain)
mux.HandleFunc("/privacy", handlePrivacy)
mux.HandleFunc("/login", handleLogin)
mux.HandleFunc("/callback", handleCallback)