Autor Beitrag
dawidof
Hält's aus hier
Beiträge: 1



BeitragVerfasst: So 15.12.13 22:51 
Hallo liebe Community,

ich bin hier neu im Forum und hoffe damit auf Hilfe gestoßen zu sein.

Zu meinem Problem:
Ich arbeite an einem Projekt das ein Login benötigt, dieser ist schon vorhanden. Nun es gibt einmal einen user der ein Login durchführt
und damit die volle Funktionalität des Programms nutzen kann, da wären Daten einpflegen Daten edditieren, löschen...
und dann gibt es noch den Benutzer der ohne ein Login das Programm nutzt. Also liest er nur die vorhandenen Datensätze.

Nun meine Frage wie kann ich das am Besten umsetzen? Ich dachte an die Eigenschaft visible. Also sobald man sich ohne ein Passwort anmeldet, dass dann die Buttons wie Daten eipflegen etc. mithilfe von visible auf false gesetzt werden.
Doch leider besteht das Problem hier dass die eigentliche Anmeldung zum Programm in einem anderen Forms stattfindet...

Ich hoffe ich habe mein Problem deutlich genug geschildert und freue mich auf Eure Lösungsvorschläge

MfG
Dawid
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 16.12.13 02:02 
Such mal hier oder per Google nach "Kommunikation zwischen zwei Forms". Da gabs mal einen Artikel, bloß weiß ich nicht mehr wo.
Allerdings würde ich das hier nicht so lösen, dass die eine Form die andere Form aufruft und der dann sagt, die soll mal den Login machen.
Denk daran: Logik immer von der GUI trennen ;)
Besser ist, wenn die GUI dann weiß, wo welche Logik zu finden ist und dann dort Bescheid gibt, dass der Nutzer das und das gemacht haben will. Das Objekt der Logik-Klasse macht dann wie es soll und gibt der GUI danach die Ergebnisse zurück.



Was deinen Login angeht:

Ich würde hin gehen und über Singleton zentral ablegen, wer gerade angemeldet ist. So kannst du dann immer statisch abfragen, welche Rechte gerade gelten.
Um das schrittweise zu erklären, fange ich mal beim Programm-Start an (die Singleton-Klasse nenne ich einfach CurrentUser):

01. Programm startet und CurrentUser wird mit Gast-Rechten initialisiert
02. Gesamte GUI wird initialisiert
03. GUI fragt nach Rechten, findet Gast-Rechte, zeigt entsprechend an
04. Nutzer will sich einloggen klickt auf "Login"
05. GUI ruft in CurrentUser die Methode "StartNewLogin" auf
06. CurrentUser stößt den eigentlichen Login-Mechanismus an
07. LoginMechanism wickelt Login ab und gibt CurrentUser die neuen User-Informationen
08. CurrentUser erhält die neuen Daten und sagt jedem Objekt, das auf das Event UserRightsUpdated horcht, Bescheid
09. GUI erhält die Info, dass ein neuer User da ist, fragt Rechte erneut ab und stellt sich angepasst dar
10. User meldet sich ab, klickt auf "Logout"
11. GUI ruft "Logout" von CurrentUser auf
12. CurrentUser stellt seine Rechte wieder auf Gast und informiert Alle über das gleiche Event
13. GUI erhält die Info und stellt sich entsprechend neu dar

Und so weiter.
Oder bei jedem Rechte-Wechsel wird die Form neu dargestellt, das wäre einfacher, finde ich aber nicht gut, weil das dann in einem kurzen Flackern zu sehen wäre.
Was du auch noch einbauen kannst ist ein Log-System. CurrentUser teilt dann diesem Log-System immer mit, wenn sich ein Nutzer anmeldet oder abmeldet, damit das Log-System das dann protokollieren kann. Das wäre bei sensiblen Daten dann sinnvoll, damit man nach schauen kann, wer dann eingeloggt war.



Es gibt sicherlich ein besseres Vorgehen, aber das finde ich einfach und praktisch.