Tabelle mit Zugriffsberechtigungen zusammenfassen

simusch

Aktives Mitglied
Thread Starter
Mitglied seit
27.09.2004
Beiträge
2.322
Hallo

Ich stehe vor dem Berg und sehe die Lösung nicht...

Ich habe eine Tabelle (mySQL) mit Gruppen, in denen die Berechtigungen der jeweiligen Gruppen gespeichert sind:

Code:
id  |  gruppenname  |  hochladen  |  editieren  |  loeschen  | ...
-------------------------------------------------------------------
1   |     test      |     1       |      1      |     0      | ...
2   |     test2     |     0       |      1      |     1      | ...
Eine Person kann jetzt aber gleichzeitig in Gruppe 1 UND Gruppe 2 sein.

Wie kann ich mit einer einzelnen Abfrage zusammengefasst die Rechte abfragen?

Herauskommen sollte:

BenutzerXY
hochladen: 1
editieren: 1
loeschen: 1


Meine Idee war eine "GROUP BY"-Abfrage, aber da müsste ich alle 15 Berechtigungsfelder aufführen und bei einer Erweiterung alles erneut anpassen...

Danke für eure Hilfe!

Simu
 

falkgottschalk

Aktives Mitglied
Mitglied seit
22.08.2005
Beiträge
24.083
Ich würde die Gruppenzuordnung vergessen und die Berechtigungen an Personen knüpfen.
Oder, wenn Gruppen dabeisein sollen,
Person =>> Gruppe ==> Berechtigung

Dein Beispiel beisst sich aber sowieso in den Schwanz: wenn jemand in Gruppe 1 und in Gruppe 2 ist - darf er nun hochladen oder nicht? Und löschen oder nicht? Die Angaben sind widersprüchlich.
 

simusch

Aktives Mitglied
Thread Starter
Mitglied seit
27.09.2004
Beiträge
2.322
Ja, du hast Recht, dass die Angaben widersprüchlich sind... Es ist nur so, dass diese Frage zu einer mittlerweilen sehr umfangreichen Fotoplattform gehört (12000 Fotos) und ich nun vor der Situation stand, dass gewisse Personen eben in 2 Gruppen gehören.

Es geht nicht nur um diese erwähnten Rechte sondern in erster Linie darum, dass Personen in einer gewissen Gruppe nur auf bestimmte Alben zugreifen dürfen. Und da gibt es eben jetzt Überschneidungen, die das jetzige System nicht erlaubt.

Aber zurück zu meiner Frage, hast du mir einen Tipp?

Wie in meinem Beispiel angefügt, soll jemand der in einer Gruppe löschen darf und in der anderen nicht, natürlich logischerweise löschen dürfen. Nur habe ich es nicht ganz durchschaut, wie ich diese Abfrage am einfachsten gruppieren kann.
 

falkgottschalk

Aktives Mitglied
Mitglied seit
22.08.2005
Beiträge
24.083
Widersprüchliche Angaben wirst Du gar nicht irgendwie gruppieren können..
Ich würde das, aus der SAP-Welt kommend, dennoch anders aufbauen:
Nicht abfragen was der User "alles" darf sondern im Bedarfsfall abfragen, ob er etwas bestimmtes Darf.

Ergo: Berechtigungen an Gruppe hängen (wenn es Gruppen geben soll), dort konkrete Berechtigungen dranhängen für alles was erlaubt ist (löschen Bereich a, anschauen Bereich b, Kommentare schreiben in Bereich c, ...)
Dann im "Programm (php wahrscheinlich) vor der Ausführung halt schauen:
"Darf aktueller Benutzer "Bereich b anschauen",
dazu Routine aufrufen und z.B. für alle Gruppen, in der der User ist, nach der konkreten Berechtigung suchen.
Mit dem Umweg könntest Du einzelnen Leuten über den Umweg einer separaten Gruppe auch selektive "Sonderrechte" geben.
 
Oben