dedlfix: DB-Abfrage bei Rechteverwaltung

Beitrag lesen

Hi!

Ich hab mir für meine Webseite folgendes Rechtesystem einfallen lassen:

  • Es gibt Rollen und untergeordnetet Rollen (so wie bei Drupal)
  • Jedem Benutzer sind keine, eine oder mehrere Rollen zugeteilt
  • Es gibt Kategorien und Unterkategorien für Dokumente, etc.
  • Jeder Benutzer darf in einer Kategorie das tun, was in seinen
      zugeordneten Rollen und übergeordneten Rollen erlaubt ist und
      zwar in der erlaubten Kategorie und Unterkategorien.

Wenn man dazu mal einen kleinen Ausflug in die Grammatik macht, hast du gerade Subjekte und Objekte beschrieben, aber die Prädikate fehlen. Es kann aber auch sein, dass du diese implizit mit der Rolle verbunden hast, also die Rollen nicht Gast, Benutzer und Moderator heißen sondern Leser, Schreiber und Löscher. Mit Prädikaten ergäbe sich eine feinere Gliederung.

Subjekt                   Prädikat          [Objekt]
Welche Person(engruppe)   darf was machen   [an welchem/n Objekt(en)]?

So bildet man ja einfache Sätze und so kann man auch ein Berechtigungssystem aufbauen. Das Objekt steht in [Klammern], weil es optional ist. Es würde die Tätigkeiten eines Subjektes auf bestimmte Objekte einschränken. Beispielsweise darf ein Moderator dann nicht mehr alles löschen sondern nur die Beiträge in ausgewählten Foren/Themenbereichen/wasauchimmer.

All diese Daten sind in eine MySQL-DB gespeichert.
Nun mein Problem: Wie kann ich möglichst performant abfragen, ob der Benutzer eine bestimmte Aktion in einer Kategorie tun darf?

Das hängt ja nicht zuletzt davon ab, wie du deine Prosa von oben in eine konkrete Struktur umgesetzt hast. Oder ging es dir auch darum, eine brauchbare Struktur zu finden? Dann gib bitte ein paar konkrete Beispiele an.

Lo!