Header: Doku-Links, Profil-Button & Titel "Kontrollverlust"
Impressum/Datenschutz/Beitragsordnung als Links ueber der Ueberschrift, Ueberschrift in "Kontrollverlust" umbenannt (verlinkt auf den Feed), "mein Profil" und "zurueck zum Feed" im Button-Layout. datenschutz.html aus bb6b966 wiederhergestellt, damit der Link nicht ins Leere fuehrt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,202 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Datenschutz - Kontrollverlust</title>
|
||||||
|
<link rel="stylesheet" href="/static/css/main.css">
|
||||||
|
<link rel="stylesheet" href="/static/css/normalize.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="main-frame">
|
||||||
|
<header>
|
||||||
|
<a href="/static/docs/impressum.html">Impressum</a> -
|
||||||
|
<a href="/static/docs/datenschutz.html">Datenschutz</a> -
|
||||||
|
<a href="/static/docs/beitragsordnung.html">Beitragsordnung</a>
|
||||||
|
</header>
|
||||||
|
<div id="action">
|
||||||
|
<a style="color: black;" href="/"><h1>Kontrollverlust</h1></a>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="main" style="padding: 5pt" >
|
||||||
|
<h1>Datenschutzerklärung</h1>
|
||||||
|
|
||||||
|
<p><strong>Verantwortlicher</strong><br>
|
||||||
|
David Bernet<br>
|
||||||
|
Merseburger Str. 108<br>
|
||||||
|
06110 Halle (Saale)<br>
|
||||||
|
<br>
|
||||||
|
Telefon: +49-15782760787<br>
|
||||||
|
E-Mail: <a>david@bernet.it</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Übersicht der erfassten Daten</strong></p>
|
||||||
|
<table border="1" cellpadding="8" cellspacing="0" style="border-collapse: collapse; width: 100%;">
|
||||||
|
<tr style="background-color: #f0f0f0;">
|
||||||
|
<th>Datenart</th>
|
||||||
|
<th>Zweck</th>
|
||||||
|
<th>Speicherdauer</th>
|
||||||
|
<th>Rechtsgrundlage</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Benutzername</td>
|
||||||
|
<td>Kontoidentifikation</td>
|
||||||
|
<td>Bis zur Löschung</td>
|
||||||
|
<td>Vertragserfüllung</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Passwort (gehasht)</td>
|
||||||
|
<td>Authentifizierung</td>
|
||||||
|
<td>Bis zur Löschung</td>
|
||||||
|
<td>Vertragserfüllung</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Session-Token</td>
|
||||||
|
<td>Angemeldet bleiben</td>
|
||||||
|
<td>Gewählte Dauer (20 Min - 1 Jahr)</td>
|
||||||
|
<td>Vertragserfüllung</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Beiträge & Bilder</td>
|
||||||
|
<td>Forumsinhalt</td>
|
||||||
|
<td>Bis zur Löschung</td>
|
||||||
|
<td>Vertragserfüllung</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>IP-Adresse (vollständig)</td>
|
||||||
|
<td>Technische Bereitstellung</td>
|
||||||
|
<td>Max. 24 Stunden</td>
|
||||||
|
<td>Berechtigtes Interesse</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>IP-Adresse (anonymisiert)</td>
|
||||||
|
<td>Nutzungsstatistik</td>
|
||||||
|
<td>Unbegrenzt</td>
|
||||||
|
<td>Berechtigtes Interesse</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<p><strong>1. Registrierung und Benutzerkonto</strong><br><br>
|
||||||
|
<em>Erfasste Daten:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Benutzername (öffentlich sichtbar)</li>
|
||||||
|
<li>Passwort (mindestens 10 Zeichen)</li>
|
||||||
|
</ul>
|
||||||
|
<em>Verarbeitung:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Passwort wird mit bcrypt gehasht gespeichert (Klartext wird nicht gespeichert)</li>
|
||||||
|
<li>Benutzername wird bereinigt und in Kleinbuchstaben konvertiert</li>
|
||||||
|
<li>Keine E-Mail-Adresse erforderlich</li>
|
||||||
|
</ul>
|
||||||
|
<em>Zweck:</em> Erstellung und Verwaltung des Benutzerkontos<br>
|
||||||
|
<em>Rechtsgrundlage:</em> Vertragserfüllung (Art. 6 Abs. 1 lit. b DSGVO)<br>
|
||||||
|
<em>Speicherdauer:</em> Bis zur Löschung des Kontos
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>2. Anmeldung und Sessions</strong><br><br>
|
||||||
|
<em>Erfasste Daten:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Session-Token (zufällig generiert)</li>
|
||||||
|
<li>Erstellungs- und Ablaufzeitpunkt</li>
|
||||||
|
</ul>
|
||||||
|
<em>Cookies:</em>
|
||||||
|
<ul>
|
||||||
|
<li><code>session</code> - Speichert den Anmeldestatus (HttpOnly, SameSite=Lax, Secure)</li>
|
||||||
|
<li><code>csrf_token</code> - Schutz vor CSRF-Angriffen (HttpOnly, SameSite=Strict)</li>
|
||||||
|
</ul>
|
||||||
|
<em>Wählbare Session-Dauer:</em> 20 Minuten, 1 Stunde, 5 Stunden, 24 Stunden oder 1 Jahr<br>
|
||||||
|
<em>Zweck:</em> Authentifizierung und Sicherheit<br>
|
||||||
|
<em>Rechtsgrundlage:</em> Vertragserfüllung (Art. 6 Abs. 1 lit. b DSGVO)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>3. Forumsbeiträge</strong><br><br>
|
||||||
|
<em>Erfasste Daten:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Textinhalt (max. 1000 Zeichen)</li>
|
||||||
|
<li>Erstellungszeitpunkt</li>
|
||||||
|
<li>Verknüpfung zum Benutzerkonto</li>
|
||||||
|
<li>Optional: Hochgeladenes Bild (JPG, PNG, GIF; max. 1024x1024 Pixel)</li>
|
||||||
|
</ul>
|
||||||
|
<em>Sichtbarkeit:</em> Beiträge und Benutzername sind öffentlich einsehbar<br>
|
||||||
|
<em>Zweck:</em> Bereitstellung der Forumsfunktion<br>
|
||||||
|
<em>Rechtsgrundlage:</em> Vertragserfüllung (Art. 6 Abs. 1 lit. b DSGVO)<br>
|
||||||
|
<em>Speicherdauer:</em> Bis zur Löschung durch den Nutzer
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>4. Server-Logs</strong><br><br>
|
||||||
|
<em>Erfasste Daten:</em>
|
||||||
|
<ul>
|
||||||
|
<li>IP-Adresse</li>
|
||||||
|
<li>Zugriffszeitpunkt</li>
|
||||||
|
<li>Angeforderte Seite</li>
|
||||||
|
</ul>
|
||||||
|
<em>Zweck:</em> Technische Bereitstellung der Website und Fehleranalyse<br>
|
||||||
|
<em>Rechtsgrundlage:</em> Berechtigtes Interesse (Art. 6 Abs. 1 lit. f DSGVO)<br>
|
||||||
|
<em>Speicherdauer:</em> Maximal 24 Stunden
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>5. Anonymisierte Nutzungsstatistik</strong><br><br>
|
||||||
|
<em>Erfasste Daten:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Anonymisierte IP-Adresse (IPv4: letzte 16 Bit entfernt, IPv6: letzte 80 Bit entfernt)</li>
|
||||||
|
<li>Zugriffszeitpunkt</li>
|
||||||
|
</ul>
|
||||||
|
<em>Zweck:</em> Erfassung des Seitenwachstums und Auswertung der Nutzeraktivität<br>
|
||||||
|
<em>Rechtsgrundlage:</em> Berechtigtes Interesse (Art. 6 Abs. 1 lit. f DSGVO)<br>
|
||||||
|
<em>Hinweis:</em> Durch die Anonymisierung ist keine Rückverfolgung auf einzelne Personen möglich
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>6. Datenlöschung</strong><br><br>
|
||||||
|
<em>Beitrag löschen:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Inhalt und Bilder werden entfernt</li>
|
||||||
|
<li>Beitragsstruktur bleibt erhalten (zeigt "[gelöscht]")</li>
|
||||||
|
</ul>
|
||||||
|
<em>Konto löschen:</em>
|
||||||
|
<ul>
|
||||||
|
<li>Alle eigenen Beiträge werden wie oben gelöscht</li>
|
||||||
|
<li>Alle Sessions werden beendet</li>
|
||||||
|
<li>Benutzername und Passwort werden gelöscht</li>
|
||||||
|
<li>Hochgeladene Bilder werden vom Server entfernt</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>7. Nicht erfasste Daten</strong><br><br>
|
||||||
|
Folgende Daten werden nicht erhoben:
|
||||||
|
<ul>
|
||||||
|
<li>E-Mail-Adresse</li>
|
||||||
|
<li>Standortdaten</li>
|
||||||
|
<li>Geräte- oder Browserinformationen</li>
|
||||||
|
<li>Tracking durch Drittanbieter</li>
|
||||||
|
<li>Werbe-Cookies</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>8. Ihre Rechte</strong><br><br>
|
||||||
|
Sie haben folgende Rechte bezüglich Ihrer personenbezogenen Daten:
|
||||||
|
<ul>
|
||||||
|
<li><em>Auskunft:</em> Welche Daten über Sie gespeichert sind</li>
|
||||||
|
<li><em>Berichtigung:</em> Korrektur unrichtiger Daten</li>
|
||||||
|
<li><em>Löschung:</em> Entfernung Ihrer Daten (siehe Abschnitt 6)</li>
|
||||||
|
<li><em>Widerspruch:</em> Gegen die Verarbeitung auf Basis berechtigter Interessen</li>
|
||||||
|
<li><em>Beschwerde:</em> Bei der zuständigen Datenschutzbehörde</li>
|
||||||
|
</ul>
|
||||||
|
Zur Ausübung Ihrer Rechte wenden Sie sich bitte an die oben genannten Kontaktdaten.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>9. Sicherheitsmaßnahmen</strong><br><br>
|
||||||
|
<ul>
|
||||||
|
<li>Passwörter werden mit bcrypt gehasht (nicht im Klartext gespeichert)</li>
|
||||||
|
<li>Session-Cookies sind HttpOnly (kein JavaScript-Zugriff)</li>
|
||||||
|
<li>CSRF-Schutz bei allen Formularen</li>
|
||||||
|
<li>HTTPS-Verschlüsselung</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
+8
-3
@@ -3,13 +3,18 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>kver</title>
|
<title>Kontrollverlust</title>
|
||||||
<link rel="stylesheet" href="/css/app.css">
|
<link rel="stylesheet" href="/css/app.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<h1>kver</h1>
|
<nav id="legal">
|
||||||
<div id="headerbar"><a href="/">zurück zum Feed</a></div>
|
<a href="/static/docs/impressum.html">Impressum</a> -
|
||||||
|
<a href="/static/docs/datenschutz.html">Datenschutz</a> -
|
||||||
|
<a href="/static/docs/beitragsordnung.html">Beitragsordnung</a>
|
||||||
|
</nav>
|
||||||
|
<a href="/"><h1>Kontrollverlust</h1></a>
|
||||||
|
<div id="headerbar"><a class="button" href="/">zurück zum Feed</a></div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
|
|||||||
+7
-2
@@ -3,12 +3,17 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>kver</title>
|
<title>Kontrollverlust</title>
|
||||||
<link rel="stylesheet" href="/css/app.css">
|
<link rel="stylesheet" href="/css/app.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<h1>kver</h1>
|
<nav id="legal">
|
||||||
|
<a href="/static/docs/impressum.html">Impressum</a> -
|
||||||
|
<a href="/static/docs/datenschutz.html">Datenschutz</a> -
|
||||||
|
<a href="/static/docs/beitragsordnung.html">Beitragsordnung</a>
|
||||||
|
</nav>
|
||||||
|
<a href="/"><h1>Kontrollverlust</h1></a>
|
||||||
<div id="headerbar"></div>
|
<div id="headerbar"></div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ async function refreshHeader() {
|
|||||||
if (loggedIn) {
|
if (loggedIn) {
|
||||||
const me = await api.get("/user/info");
|
const me = await api.get("/user/info");
|
||||||
const user = encodeURIComponent(me.username);
|
const user = encodeURIComponent(me.username);
|
||||||
bar.innerHTML = `<a href="/u/${user}">mein Profil</a> <button id="logout-btn">Logout</button>`;
|
bar.innerHTML = `<a class="button" href="/u/${user}">mein Profil</a> <button id="logout-btn">Logout</button>`;
|
||||||
document.getElementById("logout-btn").addEventListener("click", async () => {
|
document.getElementById("logout-btn").addEventListener("click", async () => {
|
||||||
await api.get("/auth/logout");
|
await api.get("/auth/logout");
|
||||||
await refreshHeader();
|
await refreshHeader();
|
||||||
|
|||||||
+8
-3
@@ -3,13 +3,18 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>kver</title>
|
<title>Kontrollverlust</title>
|
||||||
<link rel="stylesheet" href="/css/app.css">
|
<link rel="stylesheet" href="/css/app.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<h1>kver</h1>
|
<nav id="legal">
|
||||||
<div id="headerbar"><a href="/">zurück zum Feed</a></div>
|
<a href="/static/docs/impressum.html">Impressum</a> -
|
||||||
|
<a href="/static/docs/datenschutz.html">Datenschutz</a> -
|
||||||
|
<a href="/static/docs/beitragsordnung.html">Beitragsordnung</a>
|
||||||
|
</nav>
|
||||||
|
<a href="/"><h1>Kontrollverlust</h1></a>
|
||||||
|
<div id="headerbar"><a class="button" href="/">zurück zum Feed</a></div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
|
|||||||
Reference in New Issue
Block a user