2012-02-12 3 views
0

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

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

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

УВЕДОМЛЕНИЕ о том, что этот RBAC, который я пытаюсь сделать, не имеет ничего общего с фактической аутентификацией пользователя, но это всего лишь способ использовать внутренние ресурсы, например, кто может исправить вещи, кто может чистить и так далее.

ответ

1

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 

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

+0

О, я вижу, мне кажется, что это хорошо для моих нужд, тогда – Spyros