Авторизация Rails CanCan для моего сценария с участием Superadmin, администратора клиента, пользователей клиента - PullRequest
2 голосов
/ 08 ноября 2011

Я новичок в ROR. У меня есть следующие роли и их действия в моем проекте

Суперадмин [это я]
-> Может управлять всеми

Clientadmin [пользователь с правами администратора для каждого клиента]
-> Может управлять пользователем, пользователями его организации
-> может управлять данными клиента, созданными пользователями его организации

Clientuser [пользователь, который может создавать, обновлять свои собственные данные]
-> может читать данные, созданные пользователями своей организации [клиент]
-> может создавать данные
-> может обновить данные, созданные им

Модель

Клиент
Пользователь
Данные

Ассоциация

Клиент has_many: пользователи

Пользователь принадлежит к: клиенту
Пользователь has_many: данные

Данные принадлежат_: пользователи

Проблема:

Я использовал devise для аутентификации. И пытается использовать CanCan для авторизации. Нужно авторизовать superadmin для управления всеми, и могу ли я указать, что «этот пользователь может видеть только данные, созданные пользователями его организации», если да, то как.

Будет более полезно, если вы поможете мне с примером кода.

Спасибо
КГК

1 Ответ

2 голосов
/ 08 ноября 2011

На вики-странице «Определение способностей» есть несколько хороших примеров.

https://github.com/ryanb/cancan/wiki/defining-abilities

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :all
    elsif user.clientadmin?
      can :manage, User, :client_id => user.client_id
      can :manage, Data, :client_id => user.client_id
    end
  end
end
...