2012-11-11 4 views
5

Ich frage mich, ob jemand weiß, wie CanCan Berechtigungen für Emberjs zu serialisieren. Ich sah diese StackOverflow Q & A von Jo_Liss, wo sie erklärt, wie zu Serialize permissions (e.g. CanCan) with active_model_serializers, aber auf dieser Ebene gestoppt. Auch this article linked to here, talks on how to check permission on the emberjs side, aber nichts darüber, wie die Erlaubnis aus dem Backend in emberjs serialisieren.Serialize Cancan Berechtigungen für emberjs

Ich hoffe, 3 Arten von Benutzerrollen zu haben, die "Admin", "Autor", "Benutzer" ist und CanCan Berechtigungen auf Emberjs verwenden möchten, um zu steuern, was sie zugreifen können, sobald sie in der angemeldeten Route sind .

Antwort

9

Sie können die UserSerializer verwenden, um die Benutzer CanCan Fähigkeit zur Serialisierung:

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :name, :email, :ability 

    def ability 
    Ability.new(self).as_json 
    end 
end 

, dass so etwas zurück:

user: { 
    id: 1, 
    name: "xxx", 
    email: "xxx", 
    ability: rules: [ 
    { 
     match_all: false, 
     base_behavior: false, 
     actions: [ 
     "edit" 
     ], 
     subjects: [ 
     "user" 
     ], 
     conditions: { }, 
     block: null 
    }, 
    { 
     match_all: false, 
     base_behavior: true, 
     actions: [ 
     "read" 
     ], 
     subjects: [ 
     "user" 
     ], 
     conditions: { }, 
     block: null 
    } 
    ] 
} 

Sie benötigen würde, eine Art Dose zu implementieren? und kann nicht? Helfer in Javascript, um die Fähigkeiten zu verarbeiten.

Hoffe, dass hilft.

+0

danke delwyn für die Erklärung. – brg

+1

** Eine Möglichkeit, eine Art 'can' oder 'canRead' Eigenschaft zu definieren, um Benutzerautorisierung ** zu überprüfen, kann hier gesehen werden, nur um die Schleife zu schließen ** http: //jsfiddle.net/machhty/Wjtcj/ 31/** und ** http: //stackoverflow.com/questions/13372214/emberjs-1-x-pre-ember-router-and-ember-computed-issues/13393756#comment18297460_13393756** – brg