wir benutzen Rolerequirement(http://code.google.com/p/ rolerequirement/) was eigentlich sehr gut funktioniert. Hat längst nicht die Funktionenvielfalt von acegi, dafür bricht man sich auch nicht die Finger, um das aufzusetzen. Das Schöne daran finde ich, dass es recht einfach zu verstehen und zu erweitern ist - wir hatten da ein paar spezielle Anforderungen, die man nach ein bisschen rumprobieren aber relativ einfach einbauen konnte.


Das Framework sollte:
- Den Nutzung von nicht erlaubten Actions unterbinden, d.h. auf
controller-Ebene greifen.

jo, das funktioniert mittels require_role "admin" im Controller. Dazu gibt's for, :only, :for_all_except, :except, um das für einzelne Actions speziell einzustellen. Dazu :if und :unless, denen man einen Block übergeben kann, um zur Laufzeit zu ermitteln, ob autorisiert werden soll oder nicht.



- Eher unobstrusive in die Anwendung eingreifen. Es wäre z.B. schön, wenn in
den Anwendungscontroller kein Code erforderliche wäre, sondern sie zur
Laufzeit erweitert werden.

Das ganze läuft am Ende über Filter (so wie restful_authentication auch). Wir haben Controller für verschiedene Bereiche (admin, public), und packen das :require_role mit in den Bereichscontroller, von dem die einzelnen Controller erben. Ist für uns unobtrusive genug, weiß nicht, ob dir das so reicht. Irgendwo muss das :require_role halt stehen, ich finde es eigentlich im Controller ganz gut aufgehoben, aber das ist wohl Geschmackssache...

- Rechte und Rollen zentral verwalten.

Tja, ne Verwaltung für Rechte und Rollen gibt's nicht: Das haben wir selber was schrauben müssen. Und wirklich richtig dynamisch ist das auch nicht: Wenn dir eine Liste mit Controllers/Actions vorschwebt, wo man einzelne actions an und ausschalten kann - sowas ist das nicht. Man kann Usern nur Rollen zuweisen oder wegnehmen. Was die bewirken, steht dann nur im Code: Wenn jemand da was wirklich richtig dynamisches kennt, das würd mich auch interessieren...

- Nice to have: links auf nicht erlaubte controller- / action- Kombinationen
ausblenden.
D.h. bei View-Code wie <%= link_to ... if allowed? (controller,action) %>
das "if allowed(controller,action)?" überflüssig machen.

ja, das steht auch noch mit auf meiner nice-to-have-Liste...

Grüße
Stefan

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an