diff --git a/app/controllers/password_resets_controller.rb b/app/controllers/password_resets_controller.rb index bf1fa2a5b..f84762dc2 100644 --- a/app/controllers/password_resets_controller.rb +++ b/app/controllers/password_resets_controller.rb @@ -4,7 +4,7 @@ class PasswordResetsController < ApplicationController def create @user = User.find_by_name(params.dig(:user, :name)) - if @user.can_receive_email? + if @user.can_receive_email?(require_verification: false) UserMailer.password_reset(@user).deliver_later flash[:notice] = "Password reset email sent. Check your email" respond_with(@user, location: new_session_path) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 06dbc9e9e..d61623db2 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -79,7 +79,7 @@ class UsersController < ApplicationController flash[:notice] = "Sign up failed: #{@user.errors.full_messages.join("; ")}" else session[:user_id] = @user.id - UserMailer.welcome_user(@user).deliver_later + UserMailer.welcome_user(@user).deliver_later if @user.can_receive_email?(require_verification: false) set_current_user end diff --git a/app/models/user.rb b/app/models/user.rb index 75cde16bc..69db7613d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -355,8 +355,8 @@ class User < ApplicationRecord "#{name} <#{email_address.address}>" end - def can_receive_email? - email_address.present? && email_address.is_verified? && email_address.is_deliverable? + def can_receive_email?(require_verification: true) + email_address.present? && email_address.is_deliverable? && (email_address.is_verified? || !require_verification) end end diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb index fa4c01a91..689471895 100644 --- a/test/functional/users_controller_test.rb +++ b/test/functional/users_controller_test.rb @@ -119,7 +119,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_redirected_to User.last assert_equal("xxx", User.last.name) assert_equal(nil, User.last.email_address) - assert_no_emails + assert_no_enqueued_emails end should "create a user with a valid email" do @@ -136,7 +136,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest post users_path, params: { user: { name: "xxx", password: "xxxxx1", password_confirmation: "xxxxx1", email: "test" }} assert_response :success - assert_no_emails + assert_no_enqueued_emails end end @@ -145,7 +145,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest post users_path, params: { user: { name: "xxx", password: "xxxxx1", password_confirmation: "xxxxx1", email: "nobody@nothing.donmai.us" } } assert_response :success - assert_no_emails + assert_no_enqueued_emails end end