Thread Rechteverwaltung (11 answers)
Opened by sitescriptor at 2010-10-14 00:34

pq
 2010-10-14 18:44
#141896 #141896
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
in battie hab ich folgendes:
Ein User hat mehrere Rollen zugewiesen und eine Rolle hat mehrere Aktionen.

In Zukunft will ich aber noch eine Schicht Gruppe dazwischensetzen.

Das wäre dann z.b.:
User X hat die Gruppe Moderator.
Die Gruppe Moderator hat die (im Sinne von "setzt sich zusammen aus den") Rollen "Gast", "Registriert", "User", "Janitor" und "Moderator".

Und die Aktionen sind dann z.b.:
Gast: Threads lesen, Threads (mit Vorbehalt) eröffnen
Registriert: Account-Verwaltung
User: Threads eröffnen, schreiben, eigene Beiträge editieren
Janitor: Gast-Beiträge lesen, freigeben
Moderator: Beiträge löschen

Damit lassen sich die Rechte sehr fein einteilen. In der Anwendung selbst frage ich nicht nach Gruppe oder Rolle ab, sondern immer nur nach Aktionen. Das sieht dann im Template z.b. so aus:
[%if .can.poard.approve_thread %] button zum approven darstellen [%/if %]

Ist natürlich ein Haufen SQL, das da abgesetzt wird, deswegen mache ich das so: beim Anmelden eines Users lese ich die Rollen und Aktionen und schreibe die Aktionen für diesen User in einen Cache, der sagen wir 2 Minuten lang hält (kann man auch verlängern, man muss dann ggfs. drauf achten, dass alle Änderungen in der Rechte-Kette den Cache der betroffenen User löschen).
Die Gast-Aktionen cache ich auch.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Rechteverwaltung