[PHP&MySQL] Rechtevergabe für eigenes Mini-CMS

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
BM_Dirk
Mitglied
Beiträge: 46
Registriert: 20.11.2002 17:23

[PHP&MySQL] Rechtevergabe für eigenes Mini-CMS

Beitrag von BM_Dirk »

Hi,

ich habe ein Mini-CMS programmiert und möchte den Usern nun best. Rechte geben (z.B. News schreiben, geschriebene News editieren, alle News editieren, Foreneinträge editieren, Rubrik XY ansehen, Rubrik Z ansehen....).

Die Anzahl der Rechte die ich vergeben will beläuft sich auf etwa 50 Stück.

Nun habe ich eine abstrakte Klasse "Mitglieder" gemacht und 3 davon erbende Klassen "Mitglied", "Admin", "Probemitglied".

Dabei sollen grundsätzlich jedes "Mitglied" die gleichen Rechte haben, jeder "Admin" die gleichen und jedes "Probemitglied" und nur in Einzelfällen sollen die Rechte angepasst werden.

So viel zum Background.

Nun meine Frage: Soll ich auf jeder Seite nun für das entsprechende Mitglied - je nach Status (also "Admin", "Mitglied" oder "Probemitglied") eine neue Instanz erzeugen in der die Rechte gesetzt werden oder soll ich je nach Rubrik eine Datenbankabfrage machen - z.B. Benutzer will Rubrik Downloads anschauen -> in DB nachschauen, ob er mit seinem Status überhaupt die Erlaubnis hat.

Entsprechend der Rechte will ich auch die Menüs, etc. anpassen, also daß z.B. die Rubriken, die der Nutzer nicht besuchen darf sollen nicht angezeit werden bzw. umgekehrt: Nur die "Optionen", die der Benutzer nutzen darf sollen angezeigt werden.

Wie macht man das jetzt am professionellsten? Alle Rechte jedes Mal in einem Objekt setzen, in den Sessions übergeben oder jedes Mal eine neue DB-Anfrage für die einzelnen Rubriken?

Was ist am schnellsten / besten / ....?

Vielen Dank und Grüße,

Dirk
Benutzeravatar
larsneo
Mitglied
Beiträge: 2622
Registriert: 07.03.2002 15:23
Wohnort: schwäbisch gmünd
Kontaktdaten:

Beitrag von larsneo »

wirf mal einen blick auf phpgacl - auch wenn es jetzt wie overkill erscheint ist es wahrscheinlich auf lange sicht besser auf eine etablierte klasse zu setzen...
gruesse aus dem wilden sueden
larsneo
..::[krapohl.net]::..
BM_Dirk
Mitglied
Beiträge: 46
Registriert: 20.11.2002 17:23

Beitrag von BM_Dirk »

Hi larsneo,

danke für den Tipp / die Antwort!

Hab mir das mal durchgelesen und es sah auf den ersten Blick sehr gut aus, aber nachdem ich es dann runtergeladen und entpackt habe hat mich erstmal die unendliche Anzahl an Dateien erschlagen.

Denke, daß die Lösung zuuuu groß ist für mein CMS - wird von 20 Leuten (Mitgliedern in unserem Fanclub) genutzt. Freies registrieren ist nicht möglich,... also werden's auch wohl nicht allzu schnell viel mehr als die 20 Leute.

Hat jemand eine Lösung für so wenige Nutzer parat?

Danke und Grüße,

Dirk
fagus
Mitglied
Beiträge: 71
Registriert: 30.03.2004 16:55

Beitrag von fagus »

Hallo,

eine Lösung habe ich zwar keine, höchstens einen Lösungsansatz.
Ich hatte selber kürzlich ein ähnliches Problem. Da ich ebenfalls seit einigen Monaten daran bin ein CMS zu schreiben, wurde ich auch mit der Frage der Zugriffsrechte-Implementation konfrontiert. Ich habe das für mich dann mit einem einfachen Level-System für mich gelöst, da ich nicht viele Benutzerrechte habe, die ich verwalten muss. Damit es flexibel bleibt und ich in Zukunft einfacher auf eine komplexere Variante wechseln kann, z.B. mit Benutzergruppen und dergleichen habe ich die Zugriffskontrolle in eine eigene Klasse ausgelagert und spreche die Zugriffsrechte mit Namen an.

Beispiel für ein solcher Zugriff:

Code: Alles auswählen

if($perm->getAccess('artikelLesen'))
{
  // Artikel anzeigen
}
else
{
  // Zugriff wird verweigert
}
Mein Vorschlag wäre, falls dir eine Lösung mit Levels zu simpel wäre:

Eine Tabelle mit den Gruppenrechten, in der du jedes einzelne Recht als eigene Spalte führst. Eine weitere Tabelle mit den Zuweisungen der einzelnen Mitgliedern zu den betreffenden Gruppen, wobei ich für jedes Mitglied zusätlich eine eigene Gruppe anlegen würde (so wie das auch hier bei phpBB der Fall ist). Damit gestalten sich Zugriffsrechtabfragen einfacher, da du nicht unterscheiden musst zwischen Benutzerrechte und Gruppenrechte.
Antworten

Zurück zu „Coding & Technik“