у меня 4 разных уровня доступа; Администратор, партнер, сотрудник и клиент. Администратор, Партнер и Сотрудник имеют административный доступ к клиентам. По сути, я создал приложение Rails, где клиенты могут загружать документы своему поставщику (партнерам). Все отлично работает, кроме доступа на уровне клиента. У меня есть два кода; Партер-код и код клиента. Партнеры могут видеть только те файлы, в которых поле партера имеет равное коду партнера. Это работает просто отлично. Однако клиент может видеть только файлы, в которых совпадает код партнера и совпадает код клиента. Ниже мой клиентский раздел. Что работает, так это то, что клиенту разрешено видеть только файлы партера, но он настраивает их на просмотр других клиентов, принадлежащих партнеру (введя номер в URL). Я сомневаюсь, что это когда-нибудь станет проблемой, но это дыра в безопасности, которую я бы точно хотел закрыть.
role :client do
has_permission_on [:users], :to => [:client, :edit, :update] do
if_attribute :username => is { user.username }
end
has_permission_on [:documents], :to => [:client, :new, :create]
has_permission_on [:documents], :to => [:client, :index, :show, :edit, :update, :destroy, :documents] do
if_attribute :partnercode => is { user.partnercode }, :clientcode => is { user.clientcode }
end
end