5

我想知道是否有人知道如何将 CanCan 权限序列化为 emberjs。我看到了 Jo_Liss 的 StackOverflow Q &A,她解释了如何使用 active_model_serializers 序列化权限(例如 CanCan),但在那个级别上停止了。这篇文章也链接到这里,讨论了如何在 emberjs 端检查权限,但没有讨论如何将后端的权限序列化到 emberjs 中。

我希望有 3 种用户角色,即“管理员”、“作者”、“用户”,并且希望在 emberjs 上使用 CanCan 权限来控制他们在登录路径中可以访问的内容。

4

1 回答 1

9

您可以使用 UserSerializer 序列化用户 CanCan 能力:

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中的助手来处理能力。

希望有帮助。

于 2012-11-11T15:11:37.720 回答