Hi Christian!
Danke Dir! Aber wie setzt Du das jetzt in der Praxis um(sorry für meine kleinen Verständnisschwierigkeiten im Augenblick aber irgendwie ist da zur Zeit der Wurm drin...), also wenn Du jetzt halt z.B. prüfen mußt ob dem aktuellen Benutzer das Eintragen eines Datensatzes wie er vorhat erlaubt ist?
Würdest Du dann so eine SELECT-Abfrage wie Du oben beschrieben hast starten(halt JOIN über 3 Tabellen) und so das Recht ermitteln? Also mal ein Beispiel, der Benutzer schickt Daten um eine neuen Kunden anzulegen - ich weiß aber erstmal nicht ob er das überhaupt darf. Wenn er es darf sollen diese Daten(Vorname, Nachname...) per INSERT in die Tabelle "kunden" geschrieben werden. Dann habe ich mir also vorher für genau diese Aktionen einen Datensatz in der Tabelle "Rechte" angelegt, also übergebe ich der SELECT-Abfrage an die Rechte-Tabelle(Deine von oben) die ID dieses Datemnsatzes aus der Rechte-Tabelle, was heißt dass ich diese ID definitiv da hinschreiben muss, und prüfe was bei der Abfrage rauskommt, wenn da was positives rauskommt dann mache ich mein Insert, sonst nicht. Habe ich das so etwas korrekt wiedergegen?
Ich würde mir also eine Funktion überlegen:
Boolean check_right(string RechtName, int user_id, int sonstige_id)
Diese Funktion liefert mir also TRUE zurück wenn der User das Recht hat, und false wenn nicht, dann sieht das ganze etwa so aus:
if(check_right("schreiben", 123, 4567)) {
process_query("INSERT...");
}
else {
raise_error("Berechtigungsfehler", "Zugriff nicht eraubt");
}
So würde das also im Quelltext aussehen und die Funktionn oben besteht also weitgehend aus der von Dir beschriebenen Query.
Ich glaube jetzt habe ichs langsam, oder? Jedesmal wenn ich also an eine Situation komme wo ich die Aktionen nur bestimmten Usern vorenthalten will muss ich eben in die Rechte-Tabelle einen neuen Eintrag schreiben und wie oben beschrieben vorher auf das Recht prüfen.
Danke nochmal!
Viele Grüße
Andreas