Moved logic relative to project status from User to Project model (#3640).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9886 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
7fb2ddefde
commit
2ceb6b8230
|
@ -573,11 +573,20 @@ class Project < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Return true if this project is allowed to do the specified action.
|
# Return true if this project allows to do the specified action.
|
||||||
# action can be:
|
# action can be:
|
||||||
# * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')
|
# * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit')
|
||||||
# * a permission Symbol (eg. :edit_project)
|
# * a permission Symbol (eg. :edit_project)
|
||||||
def allows_to?(action)
|
def allows_to?(action)
|
||||||
|
if archived?
|
||||||
|
# No action allowed on archived projects
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
unless active? || Redmine::AccessControl.read_action?(action)
|
||||||
|
# No write action allowed on closed projects
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
# No action allowed on disabled modules
|
||||||
if action.is_a? Hash
|
if action.is_a? Hash
|
||||||
allowed_actions.include? "#{action[:controller]}/#{action[:action]}"
|
allowed_actions.include? "#{action[:controller]}/#{action[:action]}"
|
||||||
else
|
else
|
||||||
|
|
|
@ -455,12 +455,7 @@ class User < Principal
|
||||||
# or falls back to Non Member / Anonymous permissions depending if the user is logged
|
# or falls back to Non Member / Anonymous permissions depending if the user is logged
|
||||||
def allowed_to?(action, context, options={}, &block)
|
def allowed_to?(action, context, options={}, &block)
|
||||||
if context && context.is_a?(Project)
|
if context && context.is_a?(Project)
|
||||||
# No action allowed on archived projects
|
|
||||||
return false if context.archived?
|
|
||||||
# No action allowed on disabled modules
|
|
||||||
return false unless context.allows_to?(action)
|
return false unless context.allows_to?(action)
|
||||||
# No write action allowed on closed projects
|
|
||||||
return false unless context.active? || Redmine::AccessControl.read_action?(action)
|
|
||||||
# Admin users are authorized for anything else
|
# Admin users are authorized for anything else
|
||||||
return true if admin?
|
return true if admin?
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue