Пользовательский RBAC с CanCan (или другой плагин?) - PullRequest
0 голосов
/ 12 февраля 2012

Я ищу индивидуальное решение RBAC для приложения, которое я делаю.Основное отличие от обычного CanCan заключается в том, что RBAC полагается не на модель User, а на некоторые другие модели, полностью настраиваемые.

Например, пользователь принадлежит к группе, и у этой группы есть роли, которыеиметь конкретные разрешения.То есть пользователь может принадлежать к группе «работники» (он является работником), где работники могут «исправлять вещи».

Что я действительно хотел бы спросить, прежде чем это реализовать, так это то, является ли CanCanв состоянии сделать такую ​​индивидуальную вещь.Или, если есть лучшее решение для разработки пользовательского RBAC, может быть, лучше плагин?

Обратите внимание, что этот RBAC, который я пытаюсь сделать, не имеет ничего общего с реальной аутентификацией пользователя, но это просто способ использованиявнутренние ресурсы, например, кто умеет что-то исправлять, кто умеет убирать и так далее ...

1 Ответ

1 голос
/ 12 февраля 2012

CanCan очень мало заботится о том, откуда берутся разрешения.

Заменить

class Ability
  include CanCan::Ability

  def initialize(user)
    if user.has_role?(:foo)
      can :manage, :bars
    end
  end
end

с

class Ability
  include CanCan::Ability

  def initialize(user)
    if user.group.has_role?(:foo)
      can :manage, :bars
    end
  end
end

И у вас есть система на основе групп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...