Werner: Benutzerverwaltung - Konzept

Beitrag lesen

Hallo Vinzenz!

Gegeben sind mir die Gruppen-Ids der Untergruppen von den Gruppen, die Zugriff auf das Modul haben.
Habe ich noch etwas übersehen?

Deine vorgestellte Lösung konnte ich wegen fehlender Parameterwerte nicht nachvollziehen.

Meine Beispiele waren nicht ganz 1:1 aus meinem Projekt.
Genau genommen habe ich 2 Parameter. Die Benutzer-Id und eine Content-Id.
Datensätze der Content-Ids enthalten die Modul-Id (hier die Id des Benutzerverwaltungs-Moduls), eine Gruppen-Id und die Rechte als Integer.

Die Idee mit implizitem Verbot bei gleichzeitigem "Verbot geht über Erlaubnis" kann zu überraschenden Ergebnissen führen: Hinzufügen zu einer weiteren Gruppe in einem anderen Ast kann effektiv zum Verlust von Berechtigungen führen, d.h. zu geringeren Rechten als vorher. Ist das so gewollt oder habe ich das System falsch verstanden?

Die Rechte für das Modul sind nicht abhängig von der Gruppe sondern davon welche dem "content" gegeben wurden.

Angenommen 2 Benutzer sind beide in den Gruppen A und B.
A hat aber nur zugriff auf das Modul, dann werden nur die Benutzer angezeigt die ausschließlich in Untergruppen von A sind.
Haben A und B zugriff auf das Modul, werden beiden Benutzern alle Benutzer angezeigt die in Untergruppen von A _oder_ B sind aber nicht in anderen Gruppen inkl. A und B sind.

Der Nachteil daran ist, dass ich, will ich verschiedene Rechte für A und B, das Modul 2 mal in die Seite bauen muss und Benutzer beider Gruppen dann auch 2 Module angezeigt bekommen. Beispielsweise A darf löschen, B darf bearbeiten. Es sind immernoch 2 Benutzer in beiden Gruppen. Dann bekommt A die Zuweisung zur content-Id mit den entsprechenden Rechten und Verweis auf das entsprechende Modul. B bekommt eine Zuweisung mit anderen Rechten.

Die Benutzerverwaltung für A wird dann nur Untergruppen von A anzeigen und diese als löschbar markieren. Für B werden entsprechend nur die Benutzer dessen Untergruppen angezeigt und als bearbeitbar markiert.
Da aber beide Benutzer in beiden Gruppen sind, werden ihnen auch beide Verwaltungen angezeigt.

Ich bin mir aber ehrlich gesagt selbst nicht sicher wie gut diese Lösung ist. Ich sitze mittlerweile schon so lange daran und das war einfach die beste Lösung die mir bisher eingefallen ist.

Im weiteren zeige ich meinen Lösungsvorschlag, der auf meinem Verständnis Deiner Beschreibung basiert.

Danke erstmal dafür. Das erschlägt mich ehrlich gesagt gerade ein wenig. Ich brauch wohl etwas bis ich das alles nachvollzogen habe.
Was meinst du z.B. mit "_echten_ Untergruppen"?

a) Liste der echten Untergruppen der Gruppen, in denen sich der Benutzer befindet:

-- Echte Untergruppen haben einen lKey, der größer ist als der lKey
-- der Elterngruppe und kleiner ust als der rKey.

Achso ja. Wie gesagt, die Abfrage dafür habe ich. Ich habe die Ids aller "echten Untergruppen".

/*
    Komplizierter ist das Ausschlussverfahren:
    Hier dürfen nicht einfach alle Vorfahren aller Gruppen
    ausgeschlossen werden, in denen sich der Benutzer befindet,
    eingeschlossen der Gruppe selbst - sondern nur die Vorfahren
    inklusive der Gruppe selbst, die nicht in der Liste der echten
    Untergruppen enthalten sind.

Im Beispiel ist Uwe in den Gruppen 1 und 3 enthalten
    Vorfahren von 1 ist 1,
    Vorfahren von 3 sind 1, 2, 3
    Die Vereinigungsmenge aller Vorfahren enthält somit 1, 2, 3

Echte Untergruppen von 1 sind 2, 3, 4, 5
    Echte Untergruppen von 3 gibt es nicht

Da 2 und 3 in den echten Untergruppen enthalten sind, entfallen sie
    aus der Ausschlussliste:
    Ausgeschlossen werden nur die Mitglieder der Gruppe 1
*/

Wären dann aber nicht Benutzer die auch in Gruppen anderer Äste sind auch gelistet?

Nehmen wir 1 Mitarbeiter der in 2 verschiedenen Abteilungen arbeitet. Beide Abteilungen haben ihre eigene Personalverwaltung. Dann wäre der Mitarbeiter von beiden Personalverwaltungen "komplett kündbar". Soll das so sein oder habe ich da etwas falsch verstanden?

Beste Grüße!