Hi Christian!
Tabelle User
User-ID....Tabelle Gruppen
GID User-IDTabelle Typen
Typ-ID User-IDTabelle Rechte
Typ-ID Ort-ID Rechte(0=nix,1=lesend,2=schreibend,3=lesend+schriebend)SELECT *
FROM table
LEFT JOIN Typen
ON Ort-ID = Ort-ID
WHERE (Typen.Rechte = 1 OR Typen.Rechte = 3)
AND table.GID = $rechte->GIDSorry für das Fullquote - aber der SELECT passt absolut gar nicht zur Datenstruktur. Es gibt keine Tabelle table und die Tabelle Typen hat keine Spalte Rechte.
Ja das das nicht passt habe ich irgendwie selbst gemerkt ;-)
table steht für irgendeine Tabelle, in der ich ich eine Aktion durchführe(lesende Abfrage) die über die Tabelle mit den Festlegungen für die verschiedenen Rechte-Typen joint und darüber klärt ob eben dieser Typ von Aktionen dort dem aktuellen User gestattet ist. Aber das ist totaler Murks.
Ich glaube diese Logik kann ich nicht über einen JOIN direkt abfragen. Ich frage lieber vorher per SELECT ab ob diese Aktion für diesen User-Tyü erlaubt ist, und wenn das OK ist führe ich die Abfrage durch-. Was mich daran stört ist dass ich diese Prüfung dann wieder"hard-coded" überall in der Anwendung stehen habe. Aber vielleicht überlege ich mir auch dazu eine Klasse oder eine Funktion.
Auf alle Fälle brauche ich dann vor jeder Abfrage auf so eine Tabelle wo es um Rechte geht sowas:
if(user_has_right("bla","Typ-ID")) {
mysql_Query...
}
else {
raise_error("abc")...
}
Aber leider ist das ja noch nicht alles, ich muss ja nicht nur prüfen ob der User-Typ dZugriff hat, sondern ob der User auch in der Richtigen Gruppe ist um Zugriff zu bekommen, wobei ich das dann doch besser in dei Abfrage integriere.
Sorry, leider weiß ich hier im Augenblick nicht so wirklich weiter, irgendwie ist das halt nicht wirklich rund was ich mir hier überlege.
Ich hoffe jetzt verstehst Du es besser. BEdenke das ich 2 verschiedene Ebenen habe, einmal user-typ(Admin...) und einem User-Gruppe (Apteilung1,2,3...), in jeder Gruppe soll jeder nur auf die Daten dieser Gruppe zugreifen können, aber in der Gruppe gibt es Admins, Gäste die verschiedend weitreichende Rchte haben(schreibend, oder nur lesend...)
Grüße
Andreas