Christian Seiler: Ideen zu Rechtesystem in PHP

Beitrag lesen

Hallo Andreas,

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...)

Ich vergesse einfach mal Dein Datenmodell und entwerfe mein eigenes dazu:

Für den Fall Benutzer:Gruppen m:n, Benutzer:Typen n:1:

Tabelle Gruppen
---------------
GruppenID
GruppenName

Tabelle Typen
---------------
TypID
TypName

Tabelle Benutzer
----------------
BenutzerID
...
TypID

Tabelle Benutzer_Gruppen
------------------------
BenutzerID
GruppenID
...

Tabelle Rechte (SonstigeID kann z.B. die ID eines Menüeintrages sein)
--------------
GruppenID
TypID
SonstigeID
RechtName
...

Listet alle Rechte dieses Benutzers:

SELECT
  Rechte.RechtName as RechtName
FROM
  Rechte,
  Benutzer_Gruppen,
  Benutzer
WHERE
  Rechte.GruppenID = Benutzer_Gruppen.GruppenID
AND
  Rechte.TypID = Benutzer.TypID
AND
  Benutzer_Gruppen.BenutzerID = Benutzer.BenutzerID
AND
  Benutzer.BenutzerID = $user_id
AND
  Rechte.SonstigeID = $sonstige_id;

Für den Fall Benutzer:Gruppen n:1, Benutzer:Typen n:1:

Tabelle Gruppen
---------------
GruppenID
GruppenName
...

Tabelle Typen
---------------
TypID
TypName
...

Tabelle Benutzer
----------------
BenutzerID
...
TypID
GruppenID

Tabelle Rechte
--------------
GruppenID
TypID
SonstigeID
RechtName

Listet alle Rechte dieses Benutzers:

SELECT
  Rechte.RechtName as RechtName
FROM
  Rechte,
  Benutzer
WHERE
  Rechte.GruppenID = Benutzer.GruppenID
AND
  Rechte.TypID = Benutzer.TypID
AND
  Benutzer.BenutzerID = $user_id
AND
  Rechte.SonstigeID = $sonstige_id;

RechtName kann dann z.b. "Lesen", "Schreiben", etc. sein, je nachdem, was Du halt brauchst.

Viele Grüße,
Christian

--
Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!