Jump to content
Sign in to follow this  
k00ni

Gedanken zu einem kleinen aber feinen Rechtesystem

Recommended Posts

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

Share this post


Link to post
Share on other sites

Danke für den Link splasch! Ist echt gut, wenn man es nochmal bildlich vor sich hat und es nicht nur "hört" ;)

Share this post


Link to post
Share on other sites
Danke für den Link splasch! Ist echt gut, wenn man es nochmal bildlich vor sich hat und es nicht nur "hört" ;)

 

Kein Problem wollte nur nicht alles nochmal Posten deswegen nur der Link.


Mfg Splasch

Share this post


Link to post
Share on other sites

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 eine kostenlose Homepage erstelle, werde ich das wohl integrieren. Ergebnisse poste ich dann mal hier, dann könnt ihr euch selbst ein Bild machen.

Share this post


Link to post
Share on other sites
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 eine kostenlose Homepage erstelle, werde ich das wohl integrieren. Ergebnisse poste ich dann mal hier, dann könnt ihr euch selbst ein Bild machen.

 

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.

Share this post


Link to post
Share on other sites

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


LG

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...