Add write control on repository from Redmine interface

* new methods to add/remove rights in app/models/role.rb
  * some unit tests
  * add write check in Redmine.pm

To keep compatibility migration add write rights to non builtin roles
but default clean install give write access only to manager and
developer, not to reporter.


git-svn-id: http://redmine.rubyforge.org/svn/branches/nbc@1791 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Nicolas Chuche
2008-09-08 13:01:40 +00:00
parent 473869db6b
commit f5f51f4f83
6 changed files with 66 additions and 9 deletions
+20 -2
View File
@@ -36,7 +36,7 @@ class Role < ActiveRecord::Base
has_many :members
acts_as_list
serialize :permissions
serialize :permissions, Array
attr_protected :builtin
validates_presence_of :name
@@ -49,9 +49,27 @@ class Role < ActiveRecord::Base
end
def permissions=(perms)
perms = perms.collect {|p| p.to_sym unless p.blank? }.compact if perms
perms = perms.collect {|p| p.to_sym unless p.blank? }.compact.uniq if perms
write_attribute(:permissions, perms)
end
def add_permission!(*perms)
self.permissions = [] unless permissions.is_a?(Array)
permissions_will_change!
perms.each do |p|
p = p.to_sym
permissions << p unless permissions.include?(p)
end
save!
end
def remove_permission!(*perms)
return unless permissions.is_a?(Array)
permissions_will_change!
perms.each { |p| permissions.delete(p.to_sym) }
save!
end
def <=>(role)
position <=> role.position