umfangreiche Rechteverteilung

iLu_is_a_loser

Erfahrenes Mitglied
Hallo ich bin am überlegen, wie ich eine umfangreiche Rechteverteilung am besten gestalten kann.
Ich wollte für jedes Modul jeden User einzeln Rechte verteilen können.

Mir schwirt jetzt irgendwas mit Primzahlen im Kopf herum!

Ist dies damit möglich oder gibt es vielleicht eine bessere Lösung für dieses?


gruß
 
Primzahlen?

Irgendwie passt das bei mir gar nicht zu einer Rechteverteilung...?

http://de.wikipedia.org/wiki/Primzahlen

Grundsätzlich wäre interessant zu wissen, welche Rechte es bei den Modulen gibt.
Ich hatte mal ein kleines Backend für eine Seite geschrieben, da war die Tabelle wie folgt aufgebaut:

foreign_id | modul_id | prepare | post | edit | delete | template


Dies gabs dann für mehrere Gruppen bzw. auch für einzelne User.

prepare: Der Benutzer darf Artikel/Einträge vorbereiten, diese müssen dann durch einen User mit "post" Rechten freigeschaltet werden.
post: Der Benutzer darf Artikel/Einträge eintragen.
edit und delete sollten dementsprechend selbsterklärend sein.
"template" heißt, dass er die entsprechende Template Datei bearbeiten darf.
 
Im grunde genomm möchte ich das gleiche verteilen!

SHOW || POST || EDIT || DELETE || MODULE

und jetzt bin ich halt am überlegen, wie ich die Rechte am besten einem User bzw einer Gruppe zuweisen kann.
 
Zuletzt bearbeitet:
Also ich hatte es wie gesagt so, dass die foreign_id eine User ID oder eine Gruppen ID sein kann.

User IDs waren bei mir reine Zahlen (1-xxxxxx), während die Gruppen IDs einen zwei bis dreistelligen Präfix hatten (ad = Administratorgruppe, mod = Moderatorgruppe, red = Redakteurgruppe, usr = Usergruppen) und danach eine Zahl.
Die Gruppen IDs wurden vom Backend verwaltet, während die Benutzer ID von der Benutzertabelle eben in mySQL verwaltet wurde.
 
Ich habe es damals bei meiner IHK-Projektarbeit so gemacht

id || rights || template

wobei id eben eine Grp oder ein einzelner User war und rights war einer zweier Potenz mit vorgegeben Werten.

zb. Forum anschauen = 2, Forum schreiben = 4 , Forum editieren = 8 usw...
so wäre zb dannn Lese und Schreibrechte : Rights->6 und mit editmode dann Rights->14.

zur Realisierung dieser Sache solltest du eben nen Webinterface erstellen, wo du dann die rights setzen kannst und welches nach deinen Zahlenregeln dann eben den rights wert für das jeweilige Modul ausrechnet ;)

bei der Rechteüberprüfung schreibst du dann eben :
PHP:
<?
if($rights & 8 {
    // User kann editen}

if($rights & 4) {
    // User kann schreiben
}

if($rights & 2 {
    // User kann lesen
}

man sollte halt bei dei Überprüfung immer mit der größten Zahl beginnen, damit man sicher gehen kann keine Überschneidungen oder falsche Rechtezuweisungen zu bekommen. ausserdem sollte nach der Prüfung der $rights wert immer 0 betragen, tut er das nicht stimmt die Rechtevergabe nicht.

Ich hoffe, dass dir das evtl nen bissle weiterhilft und vielleicht auch nen netter Gedankenansatz ist. Ich persönlich favorisiere dieses Rechtesystem.

Greetz Xery
 
Zuletzt bearbeitet:
Zurück