Index: app/models/mail_handler.rb =================================================================== --- app/models/mail_handler.rb (revision 6095) +++ app/models/mail_handler.rb (working copy) @@ -65,6 +65,14 @@ if @user logger.info "MailHandler: [#{@user.login}] account created" if logger && logger.info Mailer.deliver_account_information(@user, @user.password) + if !@@handler_options[:unknown_user_group].nil? + # Fetch specified group. + @group = Group.find_by_name(@@handler_options[:unknown_user_group]) + if !@group.nil? + # Attach the group to user. + @group.users << @user + end + end else logger.error "MailHandler: could not create account for [#{sender_email}]" if logger && logger.error return false Index: app/models/group.rb =================================================================== --- app/models/group.rb (revision 6095) +++ app/models/group.rb (working copy) @@ -24,6 +24,11 @@ validates_presence_of :lastname validates_uniqueness_of :lastname, :case_sensitive => false validates_length_of :lastname, :maximum => 30 + + # Fetch group name. + def self.find_by_name(lastname) + find(:first, :conditions => ["LOWER(lastname) = ?", lastname.to_s.downcase]) + end def to_s lastname.to_s Index: extra/mail_handler/rdm-mailhandler.rb =================================================================== --- extra/mail_handler/rdm-mailhandler.rb (revision 6095) +++ extra/mail_handler/rdm-mailhandler.rb (working copy) @@ -20,6 +20,7 @@ # ignore: email is ignored (default) # accept: accept as anonymous user # create: create a user account +# --unknown-user-group=.... name of new user primary group # --no-permission-check disable permission checking when receiving # the email # -h, --help show this help @@ -72,7 +73,7 @@ class RedmineMailHandler VERSION = '0.1' - attr_accessor :verbose, :issue_attributes, :allow_override, :unknown_user, :no_permission_check, :url, :key + attr_accessor :verbose, :issue_attributes, :allow_override, :unknown_user, :unknown_user_group, :no_permission_check, :url, :key def initialize self.issue_attributes = {} @@ -90,6 +91,7 @@ [ '--priority', GetoptLong::REQUIRED_ARGUMENT], [ '--allow-override', '-o', GetoptLong::REQUIRED_ARGUMENT], [ '--unknown-user', GetoptLong::REQUIRED_ARGUMENT], + [ '--unknown-user-group', GetoptLong::REQUIRED_ARGUMENT], [ '--no-permission-check', GetoptLong::NO_ARGUMENT] ) @@ -111,6 +113,8 @@ self.allow_override = arg.dup when '--unknown-user' self.unknown_user = arg.dup + when '--unknown-user-group' + self.unknown_user_group = arg.dup when '--no-permission-check' self.no_permission_check = '1' end @@ -127,6 +131,7 @@ data = { 'key' => key, 'email' => email, 'allow_override' => allow_override, 'unknown_user' => unknown_user, + 'unknown_user_group' => unknown_user_group, 'no_permission_check' => no_permission_check} issue_attributes.each { |attr, value| data["issue[#{attr}]"] = value }