Membership Management System as Plugin
Provide a Membership Management System as plugin
Frontend: https://vaadin.com/
- Beim Start-Event (Node-Online) registriert sich der Client beim Group-Manager (mit einem Passwort?), der in seiner Config hinterlegt ist
- Der Group-Manager prüft, ob der Client für den Join berechtigt ist und stellt ihm dann mithilfe seines privaten Schlüssels ein Membership-Zertifikat aus, dass er anderen Teilnehmern vorweisen kann (dadurch muss das Passwort nicht immer umhergeschickt werden und es können auch andere Dinge als Zugangsberechtigung verwendet werden, wie bspw. der Key)
- Der Group-Manager sendet dem Client das Zertifikat
- Der Group-Manager informiert alle bereits gejointen Clients über den neuen Client
graph TD
A[Client] -->|Join| B[Group-Manager]
B --> C{Fulfills group requirments?}
C -->|No| E(Generate join failed message)
C -->|Yes| D(Generate welcome message)
D --> |Send| A
E --> |Send| A
-
Der Group-Manager informiert immer alle registrierten Knoten über alle Änderungen wie Join und Leave -
Group-Events wie ein Join oder Leave werden an die App weitergereicht, so dass diese darauf reagieren kann und auch mitbekommt wer alles momentan Teil des Netzwerks ist -
Man sollte sich bei mehreren Gruppen gleichzeitig anmelden können -
Group Manager sollte vllt auch festlegen können welche Schwierigkeit der Proof-of-Work mindestens haben muss. PoWs mit höherer Güte werden immer akzeptiert. -
Auf dem Group-Manager Knoten sollte es möglich sein über eine UI die Gruppe zu verwalten (bspw. Knoten Zugangsberechtigungen für die Gruppe zu geben oder zu entziehen) -
Man kann an alle Mitglieder einer Gruppe eine Nachricht schreiben über die Syntax*@groupName
oder an eine zufällige Person über?@groupName
. Das Plugin löst dies dann automatisch in korrekte Einzelanfragen auf. Eine bestimmte Person kann man perpublicKey@groupName
addressieren
Edited by 6roebert