Jump to content

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

Link to post
Share on other sites
  • 3 years later...
  • 2 weeks later...
  • 1 month later...
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.

Link to post
Share on other sites
  • 6 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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.

×
×
  • Create New...