Механизм разрешения / авторизации на основе объекта Rails? - PullRequest
1 голос
/ 17 марта 2010

Я хочу добавить функцию «Общий доступ к документам» в свое приложение, как в службе документов Google. Как я вижу:

Пользователь может:

  • может перечислять / просматривать / создавать / редактировать / удалять собственные документы
  • поделиться своим документом с каждым - это публичный документ
  • поделиться собственным документом с другим пользователем, имеющим доступ только для чтения
  • поделиться собственным документом с другим пользователем с правами чтения-записи
  • просмотр списка собственных документов и пользователей, которым он дал разрешение на чтение и запись
  • просмотр списка иностранных документов
  • просмотр / редактирование иностранного документа с разрешениями на чтение / запись

Скажите, пожалуйста, какое решение для разрешения / авторизации предпочтительнее для моей задачи?

1 Ответ

2 голосов
/ 19 марта 2010

Вы можете посмотреть некоторые плагины авторизации, доступные здесь:

http://www.ruby -toolbox.com / категории / rails_authorization.html

Что касается авторизации / разрешения на уровне объекта, похоже, что canable может сделать это:

http://github.com/jnunemaker/canable

Из примера в файле readme:

class Article
  include MongoMapper::Document
  include Canable::Ables
  userstamps! # adds creator and updater

  def updatable_by?(user)
    creator == user
  end

  def destroyable_by?(user)
    updatable_by?(user)
  end
end

Вы также можете определить viewable_by? метод. Вам все еще понадобятся какие-то поля разрешений или ассоциации в модели документа, но после этого вы можете использовать canable для упрощения авторизации в вашем контроллере / представлениях.

...