Project

General



Profile

« Previous | Next » 

Revision 2484

Send an email to the user when an administrator activates a registered user (#2656).

View differences:

trunk/app/controllers/users_controller.rb
75 75
      @user.admin = params[:user][:admin] if params[:user][:admin]
76 76
      @user.login = params[:user][:login] if params[:user][:login]
77 77
      @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless params[:password].nil? or params[:password].empty? or @user.auth_source_id
78
      if @user.update_attributes(params[:user])
78
      @user.attributes = params[:user]
79
      # Was the account actived ? (do it before User#save clears the change)
80
      was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE])
81
      if @user.save
82
        Mailer.deliver_account_activated(@user) if was_activated
79 83
        flash[:notice] = l(:notice_successful_update)
80 84
        # Give a string to redirect_to otherwise it would use status param as the response code
81 85
        redirect_to(url_for(:action => 'list', :status => params[:status], :page => params[:page]))
trunk/app/models/mailer.rb
133 133
         :url => url_for(:controller => 'users', :action => 'index', :status => User::STATUS_REGISTERED, :sort_key => 'created_on', :sort_order => 'desc')
134 134
  end
135 135

  
136
  # A registered user's account was activated by an administrator
137
  def account_activated(user)
138
    set_language_if_valid user.language
139
    recipients user.mail
140
    subject l(:mail_subject_register, Setting.app_title)
141
    body :user => user,
142
         :login_url => url_for(:controller => 'account', :action => 'login')
143
  end
144

  
136 145
  def lost_password(token)
137 146
    set_language_if_valid(token.user.language)
138 147
    recipients token.user.mail
trunk/app/views/mailer/account_activated.text.html.rhtml
1
<p><%= l(:notice_account_activated) %></p>
2
<p><%= l(:label_login) %>: <%= link_to @login_url, @login_url %></p>
0 3

  
trunk/app/views/mailer/account_activated.text.plain.rhtml
1
<%= l(:notice_account_activated) %>
2
<%= l(:label_login) %>: <%= @login_url %>
0 3

  
trunk/test/functional/users_controller_test.rb
126 126
    assert_equal 2, Member.find(1).role_id
127 127
  end
128 128
  
129
  def test_edit_with_activation_should_send_a_notification
130
    u = User.new(:firstname => 'Foo', :lastname => 'Bar', :mail => 'foo.bar@somenet.foo', :language => 'fr')
131
    u.login = 'foo'
132
    u.status = User::STATUS_REGISTERED
133
    u.save!
134
    ActionMailer::Base.deliveries.clear
135
    Setting.bcc_recipients = '1'
136
    
137
    post :edit, :id => u.id, :user => {:status => User::STATUS_ACTIVE}
138
    assert u.reload.active?
139
    mail = ActionMailer::Base.deliveries.last
140
    assert_not_nil mail
141
    assert_equal ['foo.bar@somenet.foo'], mail.bcc
142
    assert mail.body.include?(ll('fr', :notice_account_activated))
143
  end
144
  
129 145
  def test_destroy_membership
130 146
    assert_routing(
131 147
    #TODO: use DELETE method on user_membership_path, modify form

Also available in: Unified diff