如何在插件init.rb中覆盖redmine.rb权限

时间:2014-07-31 20:15:49

标签: ruby-on-rails ruby permissions redmine redmine-plugins

我正在开发一个redmine插件,其任务是提供一些额外的允许/禁止选项,其中一个功能应该是管理员可以允许/禁止访问为持续角色发布报告。

问题是,即使您尝试在插件init.rb中重新定义redmine.rb中定义的权限,也会合并权限,这会导致另一个权限(包含在:view_issues中)允许访问问题报告。

如何覆盖使用我的插件init.rb在redmine.rb中定义的权限

我的插件init.rb:

Redmine::Plugin.register :report_roles do
  name 'Report Roles plugin'
  author 'Author name'
  description 'This is a plugin for Redmine'
  version '0.0.1'
  url 'http://example.com/path/to/plugin'
  author_url 'http://example.com/about'

  Redmine::AccessControl.map do |map|
      map.project_module :issue_tracking do |map|
        map.permission :generate_issue_reports, {:reports => [:issue_report,:issue_report_details ]},:read => true
    end
  end    
end

我的redmine.rb的相关部分:

...

map.project_module :issue_tracking do |map|
    # Issue categories
    map.permission :manage_categories, {:projects => :settings, :issue_categories => [:index, :show, :new, :create, :edit, :update, :destroy]}, :require => :member
    # Issues
    map.permission :view_issues, {:issues => [:index, :show],
                                  :auto_complete => [:issues],
                                  :context_menus => [:issues],
                                  :versions => [:index, :show, :status_by],
                                  :journals => [:index, :diff],
                                  :queries => :index,
                                  :reports => [:issue_report, :issue_report_details]},
                                  :read => true
end

...

:reports => [:issue_report, :issue_report_details](包含在:view_issues中)也允许访问问题报告,我只想"删除"来自:issue_views的权限并授予他们额外的权限,因为应启用:view_issues权限!

我还尝试在init.rb中重新定义:view_issues,但这没有效果。

0 个答案:

没有答案