mirror of
https://gitlab.com/fabinfra/fabaccess/fabaccess-api-cs.git
synced 2025-03-12 14:51:42 +01:00
267 lines
8.9 KiB
Markdown
267 lines
8.9 KiB
Markdown
Use Cases
|
|
===
|
|
|
|
# Requierements
|
|
+ User0 - User ohne Account
|
|
+ UserA - generischer User
|
|
+ UserB - generischer User mit gleichen Rollen wir UserA
|
|
+ UserC - generischer User ohne Rollen
|
|
+ MaschineA - frei zugängliche Resource mit festem Ort und Stromanschluss
|
|
+ TerminalA - NFC Reader bei MaschineA, welche nur MaschinA nutzen kann
|
|
+ RolleB - Rolle mit Berechtigungen MaschineB zu nutzen
|
|
+ MaschineB - beschränkt zugängliche Resource mit festem Ort und Stromanschluss
|
|
+ TerminalB - NFC Reader bei MaschineA, welche nur MaschineB mit PIN nutzen kann
|
|
+ TerminalB - NFC Reader bei MaschineA, welche nur MaschinB mit PIN nutzen kann
|
|
+ MaschineC - frei zugängliche Resource mit festem Ort und Stromanschluss, benötigt MaschineD zum funktionieren
|
|
+ MaschineD - Maschine mit welche von MaschineC gebraucht wird
|
|
+ MaschineE - Maschine, welche von meheren Nutzer gleichzeitig verwendet werden kann
|
|
+ ManagerA - User mit Berechtigung zum Verwalten von Usern und Vergeben von Berechtigungen
|
|
+ UserB
|
|
+ CardA - FabFireCard von UserA
|
|
+ CardB - FabFireCard von UserB
|
|
+ Borepin - Client zum Interagieren von BFFH über FabAccess API
|
|
+ BFFH - Server mit FabAccess API
|
|
|
|
# Assumptions
|
|
+ die Pin für alle FabFireCards eine User ist die gleiche
|
|
+ Terminals wissen für welche Maschine sie eine PIN benötigen
|
|
+ Terminals sind immer an einen Satz von Maschinen gebunden und könnten nur diese Ausleihen
|
|
+ Maschinen fallen in einen definierten State zurück, wenn der Claim disowned wird oder disown failed, wenn sich einen Maschine in einem bestimmten State befindet
|
|
+ User können entweder einen Claim oder einen Interset an der selben Resource haben
|
|
|
|
# Tests
|
|
## Serverdaten
|
|
User0 kann von BFFH im Bootstrape sich Informationen zu dem Serverrelease und namen holen und über die InstanceURL, sowie den Spacenamen.
|
|
|
|
## Accounterzeugung
|
|
*User0 geht zu ManagerA und bittet um einen Account*
|
|
|
|
ManagerA öffnet Borepin, wird automatisch angemeldet
|
|
+ öffnet die Nutzerverwaltung
|
|
+ beginnt mit dem Anlegen eines neuen Nutzers
|
|
+ trägt den Nutzernamen ein
|
|
+ fügt zusätzliche Informationen hinzu
|
|
+ gerneriert ein Initialpasswort für User0
|
|
+ sagt User0 das Passwort / druckt User0 das Passwort aus / erstellt einen QR-Code mit Anmeldedaten / emuliert einen NTAG mit Anmeldedaten
|
|
|
|
User0 installiert Borepin, öffnet Borepin und
|
|
+ trägt die Serveradresse ein
|
|
+ verbindet sich mit dem Server
|
|
+ logt sich mit Username und Passwort ein
|
|
|
|
oder
|
|
+ scannt die Anmeldedaten per QR-Code / scannt die Anmeldedaten per NFC
|
|
+ verbindet sich mit dem Server und logt sich direkt ein
|
|
|
|
-> BFFH zwingt User0 ein neues Passwort zu setzen
|
|
User0 setzt ein neues Passwort
|
|
Borepin holt ein Token für die zukünftige Anmeldung des Gerätes
|
|
|
|
*User0 kann nun Resourcen ausleihen*
|
|
|
|
## Rollenvergabe
|
|
*UserA möchte MaschineB verwenden können*
|
|
|
|
UserA geht zu ManagerA und erhält eine Einweisung für MaschineB
|
|
ManagerA öffnet Borepin, wird automatisch angemeldet und
|
|
+ öffnet die Nutzerverwaltung
|
|
+ wählt UserA aus
|
|
+ fügt UserA RolleB zu
|
|
|
|
*UserA kann nun Borepin öffnen, wird automatisch angemeldet und kann MaschineB nutzten*
|
|
|
|
## Claim
|
|
*UserA steht vor MaschineA und möchte diese verwenden*
|
|
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA in einer Liste aus / scannt den QR-Code von MaschineA / scannt den NTAG von MaschineA
|
|
+ leiht MaschineA aus
|
|
+ schaltet den Strom von MaschineA frei
|
|
+ verwendet MaschineA
|
|
+ gibt MaschineA zurück, Strom wird gesperrt vom BFFH
|
|
|
|
*UserA hat MaschineA verwendet*
|
|
|
|
## Transfer
|
|
*UserA möchte UserB die MaschineB übergeben*
|
|
|
|
UserA hatte MaschineB ausgeliehen, öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA in einer Liste aus / scannt den QR-Code von MaschineA / scannt den NTAG von MaschineA
|
|
+ generiet ein Transfer QR-Code / emuliert eine Transfer NTAG
|
|
|
|
UserB öffnet Borepin, wird automatisch angemeldet und
|
|
+ scannt Transfer QR-Code / scannt Transfer NTAG
|
|
|
|
*UserB kann nun MaschineB verwenden, ohne das der Zustand der Maschine sich verändet hat*
|
|
|
|
## Lend/Instruct
|
|
*UserA möchte UserC an MaschineB ausbilden*
|
|
|
|
UserA hatte MaschineB ausgeliehen, öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA in einer Liste aus / scannt den QR-Code von MaschineA / scannt den NTAG von MaschineA
|
|
+ generiet ein Lend QR-Code / emuliert eine Lend NTAG
|
|
|
|
UserC öffnet Borepin, wird automatisch angemeldet und
|
|
+ scannt Lend QR-Code / scannt Lend NTAG
|
|
+ verwendet MaschineB
|
|
+ gibt MaschineB zurück
|
|
|
|
UserA erhält MaschineB zurück, prüft MaschineB, gibt MaschineB zurück
|
|
|
|
*UserC hat MaschineB verwendet, unter Verantwortung von UserA*
|
|
|
|
## FabFireCard Erzeugung
|
|
*UserA geht zu ManagerA und möchte ein FabFireCard erhalten*
|
|
|
|
ManagerA öffnet Borepin, wird automatisch angemeldet und
|
|
+ öffnet die Nutzerverwaltung
|
|
+ wählt UserA aus
|
|
+ hält eine leere DESFire Karte auf den NFC Scanner
|
|
+ legt eine FabFireCard für UserA an und beschreibt diese
|
|
+ gibt UserA die FabFireCard - Card A
|
|
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ geht auf seinem Profil
|
|
+ setzt eine Pin für die FabFireCard
|
|
|
|
*UserA hat eine FabFireCard erhalten und eine zusätzliche Pin festgelegt*
|
|
|
|
## Passwortänderungen
|
|
*UserA möchte sein Passwort ändern*
|
|
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ geht auf seinem Profil
|
|
+ beginnt mit dem Ändern des Passwort
|
|
+ gibt sein altes Passwort ein
|
|
+ gibt ein neues Passwort ein
|
|
|
|
*UserA hat sein Passwort geändert*
|
|
|
|
## FabFireCard Pin ändern
|
|
*UserA möchte seine PIN zur FabFireCard ändern*
|
|
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ geht auf seinem Profil
|
|
+ beginnt mit dem Ändern der Pin
|
|
+ gibt sein Passwort ein
|
|
+ gibt eine neue PIN ein
|
|
|
|
*UserA hat seine PIN geändert*
|
|
|
|
## Passwort vergessen
|
|
*UserA geht zu ManagerA und bittet darum ein neues Passwort zu erhalten*
|
|
|
|
ManagerA öffnet Borepin, wird automatisch angemeldet und
|
|
+ öffnet die Nutzerverwaltung
|
|
+ wählt UserA aus
|
|
+ sagt User0 das Passwort / druckt User0 das Passwort aus / erstellt einen QR-Code mit Anmeldedaten / emuliert einen NTAG mit Anmeldedaten
|
|
|
|
__Gleiches Verhalten wie bei Accounterzeugung__
|
|
*UserA hat sein Passwort zurückgesetzt*
|
|
|
|
## Terminalnutzung
|
|
*UserA möchte MaschineA mit CardA ausleihen*
|
|
|
|
UserA steht vor TerminalA und
|
|
+ hält CardA auf den NFC Reader
|
|
|
|
TerminalA meldet sich bei BFFH und
|
|
+ leiht MaschineA für UserA aus
|
|
+ schaltet den Strom frei
|
|
|
|
UserA steht vor TerminalA und
|
|
+ gibt auf TerminalA ein, MaschineA zurückgeben
|
|
|
|
oder UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ gibt MaschinA zurück
|
|
|
|
*UserA hat MaschineA mit CardA ausgeliehen und verwendet*
|
|
|
|
## Terminalnutzung mit PIN
|
|
*UserA möchte MaschineB mit CardA ausleihen*
|
|
|
|
UserA steht vor TerminalB und
|
|
+ hält CardA auf den NFC Reader
|
|
-> TerminalB fordert eine PIN
|
|
+ tippt PIN ein
|
|
|
|
TerminalB meldet sich bei BFFH und
|
|
+ leiht MaschineB für UserA aus
|
|
+ schaltet den Strom frei
|
|
__Gleiches Verhalten wie bei Accounterzeugung__
|
|
|
|
*UserA hat MaschineA mit CardA ausgeliehen und verwendet*
|
|
|
|
## Reservieren
|
|
*UserA möchte für morgen MaschineA reservieren*
|
|
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ geht auf reservieren und trägt ein Zeitraum ein
|
|
|
|
-> UserA erhält zum Begin der Reservierung automatisch den Claim für die MaschineA, wenn dieser verfügbar ist
|
|
|
|
oder
|
|
|
|
-> UserA erhält zum Begin der Reservierung eine Benachrichtigung, dass die Maschine gerade verwendet wird
|
|
|
|
UserA geht zu ManagerA und bittet ihn die Maschine freizugeben
|
|
|
|
ManagerA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ entfernt den Claim
|
|
|
|
-> UserA erhält automatisch den Claim für MaschineA
|
|
*UserA kann MaschineA im Reservierungszeitraum nutzen*
|
|
|
|
## Queuing
|
|
*UserB verwendet gerade MaschineA und UserA möchte als nächster an MaschineA*
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ geht auf queuing
|
|
|
|
UserB gibt MaschineA zurück
|
|
-> UserA erhält automatisch ein Claim auf MaschineA
|
|
*UserA kann direkt nach UserB MaschineA nutzen*
|
|
|
|
## Intereset/Reservierung/Queuing aufhebn
|
|
*UserA hat einen Interest auf MaschineA*
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ beendet Interest
|
|
|
|
*UserA hat jetzt keinen Interest auf MaschineA*
|
|
|
|
## Benachrichten
|
|
*UserA möchte wissen wann die MaschineA frei ist*
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ aktiviert Benachrichtigungen für MaschineA (mit Optionen, um welchen State es geht)
|
|
|
|
-> BFFH benachrichtigt UserA, dass die MaschineA frei ist
|
|
-> Noftiy wird wieder gelöscht
|
|
|
|
oder
|
|
|
|
-> BFFH benachrichtigt UserA, dass die MaschineA frei ist
|
|
UserA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ deaktiviert Benachrichtigungen für MaschineA
|
|
|
|
*UserA wurde über Änderungen von MaschineA benachrichtigt*
|
|
|
|
## Abhängige Maschinen
|
|
*UserA möchte MaschineC ausleihen*
|
|
|
|
serA öffnet Borepin, wird automatisch angemeldet und
|
|
+ wählt MaschineA aus Liste aus
|
|
+ claimed MaschineA
|
|
-> MaschineD wird von BFFH geclaimed
|
|
|
|
## Kaputte Maschine melden
|
|
|
|
## Multi Claim
|
|
|
|
## Claim überschreiben
|
|
|
|
## Register |