\section{ Produktfunktionen } \subsection{ Registrierung } \label{f:registrierung} \begin{description} \item[Anwendungsfall:] Der Nutzer möchte sich registrieren. \item[Anforderungen:] \ref{r:login} \item[Test:] \ref{t:register}, \ref{t:pw-req} \item[Ziel:] Der Nutzer hat einen funktionierenden Account. \item[Vorbedingung:] - \item[Nachbedingung Erfolg:] Erfolgreiche Registrierung. \item[Nachbedingung Fehlschlag:] Registrierung/Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, Server \item[Auslösendes Ereignis:] Drücken des \enquote{Registrieren}-Buttons. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Öffnen der Webseite. \item Drücken auf \enquote{Registrieren}-Option. \item E-Mail-Adresse und zwei Mal neues Passwort eingeben. \item \enquote{Registrieren}-Button drücken. \item Bestätigungs-E-Mail wird an angegebene E-Mail-Adresse gesendet. \item Nutzer öffnet Bestätigungs-Link. \item Nutzer wird auf Login-Seite weitergeleitet. Der Bestätigungs-Link verfällt. \end{enumerate} \item[Erweiterung:] Wenn der Link nach 24 Stunden noch nicht angeklickt wurde, verfällt \\ dieser. \end{description} \newpage \subsection{ Anmelden } \label{f:anmelden} \begin{description} \item[Anwendungsfall:] Der Nutzer möchte sich anmelden \item[Anforderungen:] \ref{r:login}, \ref{r:login-provider} \item[Test:] \ref{t:login} \item[Ziel:] Der Nutzer ist eingeloggt. \item[Vorbedingung:] Der Nutzer hat einen funktionierenden Account. \item[Nachbedingung Erfolg:] Erfolgreiche Anmeldung \item[Nachbedingung Fehlschlag:] Anmeldung/Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, Server \item[Auslösendes Ereignis:] Drücken des \enquote{Anmelden}-Buttons. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Öffnen der Webseite. \item E-Mail-Adresse und Passwort eingeben. \item Option \enquote{Passwort merken} aus-/abwählen. \item \enquote{Anmelden}-Button drücken. \item Nutzer wird zu seinem \Gls{dashboard} weitergeleitet. \end{enumerate} \item[Erweiterung:] Wenn die Option \enquote{Passwort merken} aktiviert ist, bleibt der Nutzer \\ sitzungsübergreifend in seinem Account eingeloggt. \item[Alternativen:] \mbox{} \begin{enumerate} \item Falls sich der Browser einen vorherigen Login gemerkt hat, wird der Nutzer beim Aufruf der Seite direkt zu seinem \Gls{dashboard} weitergeleitet. \item Der Nutzer meldet sich mit einem \Gls{oauth} Dienst an. \end{enumerate} \end{description} \newpage \subsection{ Passwort vergessen } \label{f:pwreset} \begin{description} \item[Anwendungsfall:] Der Nutzer hat sein Passwort vergessen und möchte es zurücksetzen. \item[Anforderungen:] \ref{r:reset-pw} \item[Test:] \ref{t:pw-req}, \ref{t:forgot-pw} \item[Ziel:] Der Nutzer hat ein neues Passwort. \item[Vorbedingung:] Der Nutzer hat einen bestehenden Account und Zugriff auf seine E-Mail-Adresse \item[Nachbedingung Erfolg:] Erfolgreiche Passwort Zurücksetzung. \item[Nachbedingung Fehlschlag:] Zurücksetzung des Passworts / Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, Server \item[Auslösendes Ereignis:] Drücken der \enquote{Passwort-Vergessen} Option auf der Login-Seite. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Öffnen der Webseite. \item \enquote{Passwort-Vergessen} Option auswählen. \item Weiterleitung auf \enquote{Passwort zurücksetzen} Seite. \item E-Mail-Adresse des Accounts eingeben. Falls kein Account mit dieser Adresse existiert, wird dieser Schritt wiederholt. \item Bestätigungs-E-Mail mit Zurücksetzungs-Link wird an die angegebene E-Mail-Adresse gesendet. \item Der Nutzer öffnet den Zurücksetzungs-Link. \item Ein Neues Passwort zweimal eingeben. \item Auf den \enquote{Passwort-Zurücksetzen}-Button klicken. \item Weiterleitung auf Login-Seite. \end{enumerate} \end{description} \newpage \subsection{ Passwort ändern } \label{f:pwchange} \begin{description} \item[Anwendungsfall:] Der Nutzer möchte sein Passwort ändern. \item[Anforderungen:] \ref{r:reset-pw} \item[Test:] \ref{t:pw-req}, \ref{t:change-pw} \item[Ziel:] Der Nutzer hat ein neues Passwort. \item[Vorbedingung:] Der Nutzer ist in seinem Account angemeldet. \item[Nachbedingung Erfolg:] Erfolgreiche Passwort Änderung. \item[Nachbedingung Fehlschlag:] Änderung des Passworts / Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, Server \item[Auslösendes Ereignis:] Betätigen des \enquote{Passwort-Ändern}-Buttons. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Öffnen der Webseite. \item Anmelden \item Auf Account-Einstellungen gehen. \item Bisheriges Passwort und zweimal neues Passwort in dafür vorgesehene Felder eintippen. \item \enquote{Passwort-Ändern}-Button betätigen. \end{enumerate} \end{description} \newpage \subsection{ Hörfortschritt synchronisieren } \label{f:hörfortschrittSync} \begin{description} \item[Anwendungsfall:] Der Nutzer hört mit einem verknüpften \Gls{podcatcher} eine \Gls{episode} bis zu einem gewissen Zeitpunkt. Der Hörfortschritt soll mit dem Server und allen anderen Geräten synchronisiert werden. \item[Anforderungen:] \ref{r:sync}, \ref{r:store}, \ref{r:persistent-storage}, \ref{r:gpodder} \item[Test:] \ref{t:sync-episode} \item[Ziel:] Der Hörfortschritt wird auf den Server und alle verknüpften Geräte übertragen. \item[Vorbedingung:] Der Nutzer hat seinen Account mit einem \Gls{podcatcher} verknüpft und verwendet diesen im Folgenden. \item[Nachbedingung Erfolg:] Erfolgreiche Synchronisation des Hörfortschritts. \item[Nachbedingung Fehlschlag:] Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, \Gls{podcatcher}, Server \item[Auslösendes Ereignis:] Anhören einer \Gls{episode} bis zu einem gewissen Zeitpunkt. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Der Nutzer hört innerhalb eines \Gls{podcatcher}s eine \Gls{episode}. \item Der Hörfortschritt wird dem Server über die \Gls{gpodder} mitgeteilt. \item Der Server aktualisiert den Hörfortschritt im entsprechenden Datensatz des Nutzeraccounts zur \Gls{episode}. \end{enumerate} \item[Erweiterung:] Wenn sich ein weiterer \Gls{podcatcher} aktualisiert, ruft dieser die neuen Hörfortschritte des Nutzers vom Server über die \Gls{gpodder} ab und wendet diese an. \end{description} \newpage \subsection{ Abonnements synchronisieren} \label{f:abonnentsSync} \begin{description} \item[Anwendungsfall:] Der Nutzer fügt auf einem verknüpften \Gls{podcatcher} ein \Gls{abo} hinzu bzw. löscht ein \Gls{abo}. Dieses soll mit dem Server und allen anderen Geräten synchronisiert werden. \item[Anforderungen:] \ref{r:sync}, \ref{r:store}, \ref{r:persistent-storage}, \ref{r:gpodder} \item[Test:] \ref{t:sync-sub}, \ref{t:sync-unsub} \item[Ziel:] Das (De-)\Gls{abo} wird auf den Server und alle verknüpften Geräte übertragen. \item[Vorbedingung:] Der Nutzer hat seinen Account mit einem \Gls{podcatcher} verknüpft und verwendet diesen im Folgenden. \item[Nachbedingung Erfolg:] Erfolgreiche Synchronisation des \Glspl{abo}. \item[Nachbedingung Fehlschlag:] Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, \Gls{podcatcher}, Server \item[Auslösendes Ereignis:] (De-)Abonnieren eines \Glspl{podcast} innerhalb eines \Gls{podcatcher}. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Der Nutzer (de-)abonniert innerhalb eines \Gls{podcatcher}s einen \Gls{podcast}. \item Die Änderung wird dem Server über die \Gls{gpodder} mitgeteilt. \item Der Server fügt das neue \Gls{abo} persistent zum Datensatz des Nutzers auf dem Server hinzu / löscht das \Gls{abo} vom Datensatz auf dem Server. \end{enumerate} \item[Erweiterung:] Wenn sich ein weiterer \Gls{podcatcher} aktualisiert, holt dieser die aktuelle Liste der \Glspl{abo} des Nutzers vom Server über die \Gls{gpodder} (Client Pull). \end{description} \newpage \subsection{ Account löschen} \label{f:deleteAccount} \begin{description} \item[Anwendungsfall:] Der Nutzer möchte seinen Account löschen. \item[Anforderungen:] \ref{r:delete-acc} \item[Test:] \ref{t:delete-acc} \item[Ziel:] Der Account und alle Nutzerdaten werden vom Server gelöscht. \item[Vorbedingung:] Der Nutzer ist angemeldet und befindet sich auf der Einstellungsseite. \item[Nachbedingung Erfolg:] Der Account wurde gelöscht. \item[Nachbedingung Fehlschlag:] Verbindungsaufbau zum Server schlägt fehl. \item[Akteure:] Nutzer, Server \item[Auslösendes Ereignis:] Der Nutzer drückt auf den \enquote{Account löschen} Knopf. \item[Beschreibung:] \mbox{} \begin{enumerate} \item Der Nutzer drückt auf den \enquote{Account löschen}-Knopf. \item Der Nutzer wird dazu aufgefordert sein Passwort als Bestätigung der Löschung einzugeben. \item Der Server löscht den Account und alle dazugehörigen Daten. \item Der Nutzer wird auf die Login-Seite weitergeleitet. \end{enumerate} \end{description}