Refactor builtin roles creation.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6299 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-07-20 16:34:55 +00:00
parent 4f92276654
commit cf56698d91
1 changed files with 14 additions and 17 deletions

View File

@ -139,31 +139,17 @@ class Role < ActiveRecord::Base
# Return the builtin 'non member' role. If the role doesn't exist, # Return the builtin 'non member' role. If the role doesn't exist,
# it will be created on the fly. # it will be created on the fly.
def self.non_member def self.non_member
non_member_role = find(:first, :conditions => {:builtin => BUILTIN_NON_MEMBER}) find_or_create_system_role(BUILTIN_NON_MEMBER, 'Non member')
if non_member_role.nil?
non_member_role = create(:name => 'Non member', :position => 0) do |role|
role.builtin = BUILTIN_NON_MEMBER
end
raise 'Unable to create the non-member role.' if non_member_role.new_record?
end
non_member_role
end end
# Return the builtin 'anonymous' role. If the role doesn't exist, # Return the builtin 'anonymous' role. If the role doesn't exist,
# it will be created on the fly. # it will be created on the fly.
def self.anonymous def self.anonymous
anonymous_role = find(:first, :conditions => {:builtin => BUILTIN_ANONYMOUS}) find_or_create_system_role(BUILTIN_ANONYMOUS, 'Anonymous')
if anonymous_role.nil?
anonymous_role = create(:name => 'Anonymous', :position => 0) do |role|
role.builtin = BUILTIN_ANONYMOUS
end
raise 'Unable to create the anonymous role.' if anonymous_role.new_record?
end
anonymous_role
end end
private private
def allowed_permissions def allowed_permissions
@allowed_permissions ||= permissions + Redmine::AccessControl.public_permissions.collect {|p| p.name} @allowed_permissions ||= permissions + Redmine::AccessControl.public_permissions.collect {|p| p.name}
end end
@ -176,4 +162,15 @@ private
raise "Can't delete role" if members.any? raise "Can't delete role" if members.any?
raise "Can't delete builtin role" if builtin? raise "Can't delete builtin role" if builtin?
end end
def self.find_or_create_system_role(builtin, name)
role = first(:conditions => {:builtin => builtin})
if role.nil?
role = create(:name => name, :position => 0) do |r|
r.builtin = builtin
end
raise "Unable to create the #{name} role." if role.new_record?
end
role
end
end end