技术宅改变世界

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

由于最近需要对redmine系统进行插件的开发,难于需要用到权限管理,也总结了一些设置的心得,与大家分享。如果有不正确的,欢迎指出与交流。


(1)init.rb中project_menu:

只有用户在该项目中扮演的角色对于该:controller:action具有权限时才会在项目菜单中显示(包括题目下方的菜单和配置中的tab菜单等)

其中,permission函数的options参数可以设置这些值:

①:public=>true,表示不设权限设置

②:require=>:loggedin和:require=>:member,分别阻止Anonymous和Non member(对应权限报表中的Anonymous和Non member,若写上:require=>:member,则在权限报表中的Anonymous和Non member将不能勾选)

PS:这里的init.rb指的是插件中根目录中的init.rb,若要改变父工程的权限设置,可以到父工程根目录/lib/redmine.rb中设置

 

(2)init.rb中account_menu:

可以利用Proc.new {}里执行逻辑判断语句

Example:    :if => Proc.new { |p| User.current.logged? }

PS:p是本应用程序,例如可以使用p.project访问controller中获取的@project

 

(3)controller中:

①若当前controller只针对一个project:可以在before_filter处设置,步骤为::find_project,:authorize

PS:authorize函数中调用了User.current.allowed_to?函数

②若当前controller针对多个project:需要自行写一个函数,在函数中显示地调用User.current.allowed_to?(:permission, @project)进行判断

PS:User.current.allowed_to?函数中调用了Role.allowed_to?函数

 

(4)html.erb中:

 ①针对#(用户、项目、权限)三元组,可以这样使用:User.current.allowed_to?(:permission, @project)

②针对#(角色、权限)二元组,可以这样使用:role.allowed_to?(:permission)

 

posted on 2010-08-30 16:20  treeman  阅读(3602)  评论(0编辑  收藏  举报