Benutzerverwaltung



  • Hallo,

    ich möchte in meiner Windows Form Anwendung eine Art Benutzerverwaltung machen.
    D.h. nicht jeder User soll Zugriff auf jede Form haben.

    Hat jemand Erfahrung mit so etwas?
    Bzw. kann ich da generell (z.B. in der Program.cs) was machen, oder muss ich das für jede Form einzeln realisieren?

    Danke!



  • wie was, was hast denn vor?

    du kannst ne allgemeine Variable machen die den benutzer speichert (name/index) und dann zum beispiel jedesmal fragen ob derjenige das formular sehen warf bevor man es lädt... oder so ähnlich... hab dich jetzt aber warscheinlich falsch verstaden



  • Doch, hast schon richtig verstanden.

    So habe ich es bisher auch realisiert.
    D.h. in meiner Porgram.cs ne Variable user angelegt und auf jeder Form prüfe ich das entsprechend.

    Nun würde ich eben gerne wissen, ob es eine Möglichkeit gibt, dies nur einmal zu machen/prüfen und eben nicht bei jeder einzelnen Form.
    Da ist die Gefahr recht groß, mal jemand zu vergessen ... v.a. wenn neue User hinzu kommen.


  • Administrator

    Datumslooser schrieb:

    Nun würde ich eben gerne wissen, ob es eine Möglichkeit gibt, dies nur einmal zu machen/prüfen und eben nicht bei jeder einzelnen Form.

    Wie stellst du dir das vor?

    Datumslooser schrieb:

    Da ist die Gefahr recht groß, mal jemand zu vergessen ... v.a. wenn neue User hinzu kommen.

    Jemanden zu vergessen? Du prüfst aber doch nicht jede Person einzeln? Du machst doch sicher Benutzergruppen und prüfst dann auf diese Benutzergruppen? Du könntest auch Rechte als Flags setzen. Dann prüfst du einfach bei einem Benutzer, ob er diese Flags gesetzt hat. Aber ganz sicher nicht prüfst du auf den Namen der Benutzer!

    Grüssli



  • Datumslooser schrieb:
    Nun würde ich eben gerne wissen, ob es eine Möglichkeit gibt, dies nur einmal zu machen/prüfen und eben nicht bei jeder einzelnen Form.

    Wie stellst du dir das vor?

    Genau daher frage ich ja! 🙂

    Bei uns gibt es keine Benutzergruppen (ca. 20 Mitarbeiter).



  • Datumslooser schrieb:

    Bei uns gibt es keine Benutzergruppen (ca. 20 Mitarbeiter).

    Was ich für unglücklich halte. Hat wirklich jeder Mitarbeiter gänzlich unterschiedliche Rechte?

    Normalerweise (so wie ich das bislang kenne) macht man die Prüfungen tatsächlich pro Maske häufig an 2 Stellen:
    1. Im Vorfeld (Menüstruktur usw. anpassen).
    2. In der Maske zur Sicherheit noch einmal.

    Ich wüsste keinen Weg wie du deine Prüfungen gänzlich an einer Stelle halten kannst, zumal ich es auch so kenne, das sich Rechte ggf. gegenseitig beeinflussen (z.B. Recht A setzt Recht B voraus) oder ein Recht mehrere Masken oder gar Maskenteile beeinflusst.



  • Ich würde dafür dann eine FormManager-Klasse erstellen, welche den Aufruf einzelner Forms vornimmt und die Rechte überprüft. Dieser Klasse kannst du dann ein Dictionary<Type, UserRights> spendieren, welche du einmalig dort füllst:

    dict.Add(typeof(UserForm), UserRights.EditUser | UserRights.ViewUser);
    

    So kannst du dann explizit je Form die Rechte bestimmen und vor dem Anzeigen abfragen (bzw. entsprechende Menüs/Buttons enablen/disablen).

    Als Zusatz könntest du auch noch eine allg. Basisklasse für alle deine Forms erzeugen, welche z.B. die aktuellen Rechte schon im Konstruktor übergeben bekommt (falls z.B. Unterscheidung zwischen view/edit vorgenommen werden soll).

    Und wie meine Vorposter schon sagten, benutze entsprechende Benutzergruppen (ich hoffe mal, ihr verwendet dann eine Datenbank dafür). Du solltest auf keinen Fall direkt die User mit dem Programm verknüpfen!


Anmelden zum Antworten