2010-11-19 4 views
0

Ich möchte eine Level-basierte Zugangskontrolle in meiner Ruby on Rails-Anwendung implementieren. Wie dort kann ein Benutzer auf unterer Ebene nicht auf Daten seiner Eltern zugreifen.Level-basierte Access Control in Ruby on Rails

Beispiel
 
    Main Admin 
    | 
    |___ Sub Admin1 
    |  | 
    |  | 
    |  |___ SA1_USER1 
    |  | 
    |  |___ SA1_USER2 
    | 
    | 
    | 
    |___ Sub Admin2 
     | 
     |___ SA2_USER1 
     |  |  
     |  |__End_user1 
     |  |__End_user2 
     | 
     |___ SA2_USER2 

In der Struktur sagen über jeden Benutzer einen Datensatz erstellen können. Die Datensätze werden jedoch gemäß der Hierarchie angezeigt. Wie der Hauptadministrator auf alle Datensätze zugreifen kann, kann Sub Admin1 auf Datensätze zugreifen, die von self, SA1_user1 und sa1_user2 usw. erstellt wurden.

Gibt es einen guten Stecker, um dies in Ruby on Rails zu implementieren?

Danke, PraWin.

Antwort

1

Ich kenne kein Plugin, aber es wäre gar nicht so schwer, sich selbst zu schreiben. Sie müssten nur eine owner_id für jeden erstellten Datensatz haben, auf den die Benutzer zugreifen sollen, und jeder Benutzer hätte einen übergeordneten Benutzer. Dann würden Sie eine Modellmethode für user.is_ancestor_of schreiben. record.owner zu überprüfen, wann immer ein Benutzer versucht, auf einen Datensatz zuzugreifen.

+0

Ja, ich habe das in meinem Kopf. Gibt es eine Methode, die alle Vorfahren für einen Knoten und auch alle Kinder für einen Knoten zurückgibt. – Pravin

+0

nichts dergleichen existiert, von dem ich weiß, dass Sie es wahrscheinlich von Grund auf neu schreiben müssten. Hoffentlich hat jemand anderes mehr Informationen. – re5et

+0

gibt es ein nettes Plugin * Ancestry *, das ich verwendet habe, um dies zu implementieren. – Pravin