signup: don't send welcome emails to invalid addresses.
Fix attempting to send welcome emails when user didn't provide a valid email address.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user