2012-11-11 5 views
5

EmberjsにCanCan権限をシリアル化する方法を知っている人がいますか?私はこれを見たStackOverflow Q &彼女は彼女がどのようにSerialize permissions (e.g. CanCan) with active_model_serializersに説明したJo_Lissによって、しかしそのレベルで停止しました。また、this article linked to here, talks on how to check permission on the emberjs sideでも、バックエンドからemberjsへの許可をシリアル化する方法はありません。EmberjsにCancan権限をシリアライズ

「管理者」、「作成者」、「ユーザー」の3種類のユーザーロールがあり、ログインしたルートにアクセスできたらemberjsでCanCanのアクセス許可を制御したいと考えます。

答えて

9

あなたはユーザーカンカン能力シリアライズするUserSerializerを使用することができます。

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

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

のようなものが返されます:あなたは缶のいくつかの並べ替えを実装する必要があります

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 
    } 
    ] 
} 

を?できない?能力を処理するためのjavascriptのヘルパー。

希望に役立ちます。

+0

説明のためのdelwynに感謝します。 – brg

+1

**ユーザー承認を確認するために 'can'または 'canRead'プロパティを定義する方法の1つとして、ここでループを閉じることができます。 ** http://jsfiddle.net/machty/Wjtcj/ 31/** and ** http://stackoverflow.com/questions/13372214/emberjs-1-x-pre-ember-router-and-ember-computed-issues/13393756#comment18297460_13393756** – brg