On Thursday 01 May 2008, Jan Luehr wrote:
> Wie würdet ihr an das Problem herangehen?

Aus leidvoller Erfahrung empfehle ich, Rechte für einzelne Operationen 
feinkörnig zu vergeben. Diese Rechte können natürlich in Rollen 
zusammengefasst und Benutzer diesen Rollen zugeordnet werden.

Ich habe in einem Projekt das authorization-Plugin verwendet, mit dem 
man quasi-deklarativ Sachen schreiben kann wie

  permit?("owner of :object")

Sieht schön aus, nicht wahr? Führt aber (mich jedenfalls) dazu, 
Entscheidungen über Rechte in den Code zu verlegen, wo sie nicht 
hingehören: "Ach, der Benutzer ist Admin oder hat Rolle xyz -- dann 
darf er das." Teufelszeug. Führt zu Wiederholungen und ist schlecht zu 
warten. Im Anwendungscode sollte nur stehen "Darf Benutzer B Aktion A 
ausführen?". Die Zuordnung gehört an eine andere Stelle.

Es gibt ein oder mehrere ACL/RBAC-Plugins, mit denen Benutzer, Rollen 
und Rechte einigermaßen komfortabel verwaltet werden können. Ich kenne 
keine vorgefertigte Lösung, die mit "dynamischen Rollen" umgehen 
können, etwa einer besonderen Beziehung des Benutzers zu einem Objekt 
("Besitzer") oder Eigenschaften des Objekts. Das geht auch ohnehin 
fließend in die allgemeine Geschäftslogik über.

Was ich auch nicht in einer aktuellen Form kenne, ist ein Ansatz, der 
Rechte implizit in Views anwendet, also so, dass etwa f.text_field 
inaktiven Text oder gar nichts zeigt, wenn der Benutzer das Attribut 
nicht ändern bzw. sehen darf. Es gab vor Jahren Model Security von 
Bruce Perens, ich nehme aber an, das ist nicht mehr aktuell.

Michael

-- 
Michael Schuerig
mailto:[EMAIL PROTECTED]
http://www.schuerig.de/michael/
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an