Rails基于对象的权限/授权引擎?

时间:2010-03-17 16:21:57

标签: ruby-on-rails ruby permissions authorization

我想在我的应用中添加“共享文档”功能,就像谷歌文档服务一样。正如我所见:

用户可以:

  • 可以列出/查看/创建/编辑/删除自己的文档
  • 向所有人分享自己的文件 - 这是一份公开文件
  • 将自己的文档分享给具有只读访问权限的其他用户
  • 将自己的文档分享给具有读写访问权限的其他用户
  • 查看自己允许阅读和写入的文件和用户列表
  • 查看外国文件清单
  • 查看/编辑具有读/写权限的外国文档

请告诉我,为我的任务提供哪种权限/授权解决方案?

1 个答案:

答案 0 :(得分:2)

您可以查看此处提供的一些授权插件:

http://www.ruby-toolbox.com/categories/rails_authorization.html

对于对象级别授权/权限,看起来canable可以执行此操作:

http://github.com/jnunemaker/canable

来自自述文件中的示例:

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来简化控制器/视图中的授权。