Redmine使用声明式许可。创建新控制器时,权限定义中缺少该控制器及其操作,因此无法访问。
要修复此问题,您需要将新控制器的相关操作包含到权限定义中。
This is the location in
lib/redmine.rb
您可能需要修改。为清晰起见,此处复制:
map.project_module :time_tracking do |map|
map.permission :log_time, {:timelog => [:new, :create]}, :require => :loggedin
map.permission :view_time_entries, {:timelog => [:index, :report, :show]}, :read => true
map.permission :edit_time_entries, {:timelog => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member
map.permission :edit_own_time_entries, {:timelog => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin
map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
end
您应该在这个块中添加类似这样的内容:
map.permission :view_time_estimates, {:timelog_estimates => [:index, :report, :show]}, :read => true
map.permission :edit_time_estimates, {:timelog_estimates => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member
map.permission :edit_own_time_estimates, {:timelog_estimates => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin
授权通过控制器中的此调用工作:
before_filter :authorize_global, :only => [:new, :create, :index, :report]
如果你跟随
authorize_global
实施,您将
find this
:
def authorize(ctrl = params[:controller], action = params[:action], global = false)
allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project || @projects, :global => global)
if allowed
true
else
if @project && @project.archived?
render_403 :message => :notice_not_authorized_archived_project
else
deny_access
end
end
end
这个
render_403
行是您得到错误的原因。