Gedanken zu einem kleinen aber feinen Rechtesystem

Begonnen von k00ni, 17. März 2009, 11:38:34

Vorheriges Thema - Nächstes Thema

k00ni

Ich denke, man kann das sehr einfach halten. Es gibt 2 neue tabellen und man nutzt die Gruppen- und Usertabelle des jetzigen Systems.
 

rechte:
id | name | info

 
 

gruppe_rechte
id | gruppenid | rechteid | wert

 
 
Ich denke, dass es sinnvoller ist, Rechte einer Gruppe zu geben, statt eines Users. Verringert den Adminaufwand und die Abfragenzahl bezüglich der Tabellen.
Man legt nun z.b. ein Recht an
 

id | name              | info
1 |  news_create | News erstellen

 
 
Und man ordnet der Gruppe \"Redakteure\" dieses Recht zu. Kommt nun ein User auf die Seite für das Schreiben einer News, prüft man ob er der Gruppe Redakteure angehört, wenn ja, bekommt er Zugriff, wenn nicht, erhält er bspw. eine Verweigerungsmeldung.
Man kann mittels der \"wert\"-Spalte in der Tabelle gruppe_rechte noch etwas detailierter festlegen, wer was darf. Dies könnte man beispielsweise mit den Kategorien zusammen nutzen, eine gänzlich andere Nutzung ist auch denkbar!
Bsp: Du hast 3 Kategorien für die News: Allgemeines, Babynahrung und Kinderbetten. Nun ist ein User in der Gruppe Babyspezialisten. Du möchtest ihm Zugriff auf Babynahrung geben, dann legst du einfach bei der \"wert\"-Spalte die ID der Kategorie \"Babynahrung\" rein, fertig.
 
Bezüglich des Codes könnte das so funktionieren, dass man eine Funktion namens check_right aufruft und dieser den Namen des Rechtes (also hier news_create) sowie der benötigten \"werte\" übergibt, im Beispiel:
 

if ( check_right ( \"news_create\" , 0 ) == true OR check_right ( \"news_create\", 3 ) == true )

 
 
Damit wird geprüft, ob der User allgemeine Schreibrechte (wert-spalte hat Eintrag 0)  bei den News hat oder nur in der Kategorie 3 (=Babynahrung) schreiben darf.
 
Dazu habe ich noch ergänzend eine Userklasse erstellt, welche mir erstens allgemeine Userinformationen speichert ( username, nickname, ... ) und weiterhin noch ein Array besitzt, welches die Rechte beinhaltet. Man könnte dann eine Instanz dieser Klasse in der Session speichern, um nicht bei jedem Seitenaufruf die Tabellenabfragen zu müssen.
Das Array mit den Rechten ist folgendermaßen gedacht:
 

[\'rechte_name\'] [\'value\']

 
 
Dass kann man einfach durchgehen.


Ich hoff, dass war soweit alles verständlich. Was denkt ihr darüber?
 
Grüße

splasch

Ich hab mal vorlangen einen geschrieben. Schau dir es mal an Letzter Beitrag:
http://www.php2all.de/thread-651-rechtesystem.html\" rel=\"external nofollow\">http://www.php2all.de/thread-651-rechtesystem.html
Mfg Splasch

Knixx

Danke für den Link splasch! Ist echt gut, wenn man es nochmal bildlich vor sich hat und es nicht nur \"hört\" /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" />

splasch

Danke für den Link splasch! Ist echt gut, wenn man es nochmal bildlich vor sich hat und es nicht nur \"hört\" /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" />[/quote]
 
Kein Problem wollte nur nicht alles nochmal Posten deswegen nur der Link.
Mfg Splasch

Knixx

Klar, lieber bisschen weniger Aufwand und dafür mehr Wirkung  /uploads/emoticons/icon_e_biggrin.gif.40dcc5d69f84e2cf29e77d8e1e9a84e2.gif\" alt=\":D\" />

Flipper

Cooles Rechtesystem, dass du da entwickelt hast! Vielleicht werde ich das mal in meine Homepage intergrieren.
Danke dafür /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" />

Bass, Bass, wir brauchen Bass...


Flipper

So, meine jetzige Homepage ist abgeschlossen, zur Intergration des Rechtesystems bin ich nicht mehr gekommen. Das nächste Projekt steht aber schon in den Startlöchern; sobald ich also wieder http://homepage.1und1.de/homepage-erstellen-kostenlos\" rel=\"external nofollow\">eine kostenlose Homepage erstelle, werde ich das wohl integrieren. Ergebnisse poste ich dann mal hier, dann könnt ihr euch selbst ein Bild machen.

Bass, Bass, wir brauchen Bass...


splasch

So, meine jetzige Homepage ist abgeschlossen, zur Intergration des Rechtesystems bin ich nicht mehr gekommen. Das nächste Projekt steht aber schon in den Startlöchern; sobald ich also wieder http://homepage.1und1.de/homepage-erstellen-kostenlos\" rel=\"external nofollow\">eine kostenlose Homepage erstelle, werde ich das wohl integrieren. Ergebnisse poste ich dann mal hier, dann könnt ihr euch selbst ein Bild machen.[/quote]
 
Fein statt der wie im Beispiel angeben Datenbank Lösung were das Rechtesystem auch über eine Array Accessliste möglich.
Je nach dem was einen lieber ist und wofür es eingesetzt wird.

HTMLnoob

Cool! Finde das System sehr nice, auch von der Lösung bin ich begeistert, werde es mal mit der Array Accessliste probieren...
LG

\"Once a man found the internet...\"


all your base are belong to us