From 5739f6760594b3f153c3d2d11cd81f5cd87a36e8 Mon Sep 17 00:00:00 2001 From: Mahonri Gibson Date: Mon, 15 May 2017 23:41:23 +0000 Subject: [PATCH] Save email without confirmation when podmail is disabled. fixes #7195 closes #7455 --- Changelog.md | 1 + app/controllers/users_controller.rb | 20 ++++++++++++++------ spec/controllers/users_controller_spec.rb | 7 +++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Changelog.md b/Changelog.md index 5a1d01487..52273dd05 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,6 +5,7 @@ ## Bug fixes ## Features +* Change email without confirmation when mail is disabled [#7455](https://github.com/diaspora/diaspora/pull/7455) # 0.6.6.0 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 958353e28..262d0bb16 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -220,15 +220,23 @@ class UsersController < ApplicationController end def change_email(user_data) - @user.unconfirmed_email = user_data[:email] - if @user.save - @user.send_confirm_email - if @user.unconfirmed_email + if AppConfig.mail.enable? + @user.unconfirmed_email = user_data[:email] + if @user.save + @user.send_confirm_email flash.now[:notice] = t("users.update.unconfirmed_email_changed") + else + @user.reload # match user object with the database + flash.now[:error] = t("users.update.unconfirmed_email_not_changed") end else - @user.reload # match user object with the database - flash.now[:error] = t("users.update.unconfirmed_email_not_changed") + @user.email = user_data[:email] + if @user.save + flash.now[:notice] = t("users.update.settings_updated") + else + @user.reload + flash.now[:error] = t("users.update.unconfirmed_email_not_changed") + end end end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 327780607..ad8a2b70e 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -203,6 +203,13 @@ describe UsersController, :type => :controller do expect(Workers::Mail::ConfirmEmail).to receive(:perform_async).with(@user.id).once put(:update, :id => @user.id, :user => { :email => "my@newemail.com"}) end + + it "saves unconfirmed_email when podmail is disabled" do + AppConfig.mail.enable = false + put(:update, id: @user.id, user: {email: "my@newemail.com"}) + @user.reload + expect(@user.email).to eql("my@newemail.com") + end end describe 'email settings' do