From 7fcdc1c788725f866de71fc9dfd8c4d1cb132b57 Mon Sep 17 00:00:00 2001
From: Orangerot <purple@orangerot.dev>
Date: Fri, 24 May 2024 17:42:08 +0200
Subject: Initial commit

---
 00-pflichtenheft/sections/produktdaten.tex | 83 ++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 00-pflichtenheft/sections/produktdaten.tex

(limited to '00-pflichtenheft/sections/produktdaten.tex')

diff --git a/00-pflichtenheft/sections/produktdaten.tex b/00-pflichtenheft/sections/produktdaten.tex
new file mode 100644
index 0000000..c74e3fb
--- /dev/null
+++ b/00-pflichtenheft/sections/produktdaten.tex
@@ -0,0 +1,83 @@
+\section{Produktdaten}
+
+Das Projekt erhebt an unterschiedlichen Stellen Daten des Benutzers oder anderen
+Plattformen. Diese Daten können temporär gespeichert werden. Dabei bleiben die
+Daten nur für eine kurze Zeit gespeichert, zum Beispiel so lange wie der Nutzer
+eingeloggt ist. Andere Daten können auch persistent gespeichert werden. Dabei
+bleiben die Daten solange gespeichert, bis sie manuell oder durch
+\Gls{garbage-collection} gelöscht werden. 
+
+\subsection{Weboberfläche}
+
+Die Weboberfläche bezieht direkt Daten vom Benutzer. Die Weboberfläche erhält
+E-Mail-Adresse und Passwort vom Benutzer, speichert diese aber nur solange, bis
+diese an das Backend zur Validierung geschickt werden. Daraufhin erhält die
+Weboberfläche einen \Gls{session-token} welcher entweder persistent oder temporär als
+\Gls{cookie} gespeichert bleibt, je nachdem, ob der Nutzer angemeldet bleiben möchte. 
+
+Zusätzlich erhält die Weboberfläche die abonnierten \Glspl{podcast} und gehörten
+\Glspl{episode} inklusive Metadaten vom Backend. Diese Daten werden nur temporär,
+solange die Webseite offen ist, gespeichert. 
+
+\subsubsection*{Persistent}
+
+\begin{itemize}
+    \item \Gls{session-token} (falls der Nutzer angemeldet bleiben möchte)
+\end{itemize}
+
+\subsubsection*{Temporär}
+
+\begin{itemize}
+    \item Abonnierte \Glspl{podcast}
+    \item Gehörte \Glspl{episode}
+    \item \Gls{session-token}
+\end{itemize}
+
+\subsection{Backend}
+
+Das Backend interagiert nicht direkt mit dem Benutzer, sondern bekommt Daten von
+der Weboberfläche und \Glspl{podcatcher}. Wenn sich ein Nutzer über die Weboberfläche
+oder im \Gls{podcatcher} anmeldet oder registriert speichert der Server temporär die E-Mail-Adresse und
+das Passwort des Nutzers im Klartext, bevor es die Daten gegen die gehashten und
+gesalzenen persistenten Daten der \Gls{db} abgleicht beziehungsweise speichert. 
+
+Außerdem speichert das Backend abonnierte \Glspl{podcast} und gehörte
+\Glspl{episode}, welche
+es vom \Gls{podcatcher} bekommt, im persistenten Speicher. Diese Daten bleiben
+gespeichert bis sie durch neue Daten obsolet werden (\Gls{garbage-collection}),
+vom Nutzer manuell gelöscht werden oder der Account gelöscht wird. 
+
+Wenn die Weboberfläche \Glspl{episode} über \Glspl{podcast} abfragt, welche noch nicht vom
+Nutzer gehört wurden, holt der Server Metadaten über den \Glspl{podcast} und speichert
+Informationen und Bilder des \Glspl{podcast} temporär, solange der Nutzer die
+Weboberfläche geöffnet hat. 
+
+\subsubsection*{Persistent}
+\begin{itemize}
+% Email (gehasht und gesalzen) / Betreuer fragen weil evtl Mails gesendet werden
+% müssen, falls Datenschutzbedinungen geändert werden
+\item E-Mail-Adresse gehasht und gesalzen
+\item Passwort gehasht und gesalzen
+\item Abonnierte \Glspl{podcast}
+\item Gehörte \Glspl{episode} (Hörfortschritte)
+\end{itemize}
+
+\subsubsection*{Temporär}
+\begin{itemize}
+    \item Metadaten von Feeds (\Glspl{episode}, Bilder)
+\end{itemize}
+
+\subsection{Podcatcher}
+
+Der \Gls{podcatcher} speichert die E-Mail-Adresse, das Passwort und die URL der
+Gpodder-Instanz im persistenten Speicher. Zusätzlich speichert der
+\Gls{podcatcher}
+abonnierte \Glspl{podcast} und gehörte \Glspl{episode} im persistenten Speicher.  
+
+\subsubsection*{Persistent}
+\begin{itemize}
+\item E-Mail-Adresse, Passwort und URL der Gpodder-Instanz
+\item Abonnierte \Glspl{podcast}
+\item Gehörte \Glspl{episode}
+\end{itemize}
+
-- 
cgit v1.2.3

