diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 58d8cb173..2bac49942 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -65,6 +65,7 @@ class UsersController < ApplicationController @user.save if @user.errors.empty? session[:user_id] = @user.id + UserMailer.welcome_user(@user).deliver_later else flash[:notice] = "Sign up failed: #{@user.errors.full_messages.join("; ")}" end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index b61baf3f0..787ccf252 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -16,4 +16,9 @@ class UserMailer < ApplicationMailer @user = user mail to: @user.email_with_name, subject: "Confirm your email address" end + + def welcome_user(user) + @user = user + mail to: @user.email_with_name, subject: "Welcome to #{Danbooru.config.app_name}! Confirm your email address" + end end diff --git a/app/views/user_mailer/welcome_user.html.erb b/app/views/user_mailer/welcome_user.html.erb new file mode 100644 index 000000000..aab8ae2b2 --- /dev/null +++ b/app/views/user_mailer/welcome_user.html.erb @@ -0,0 +1,19 @@ + + + +

Hi <%= @user.name %>,

+ +

+ Welcome to <%= Danbooru.config.app_name %>! Click the link below to verify your email address. +

+ +

+ <%= link_to "Verify email address", verify_user_email_url(@user, email_verification_key: Danbooru::MessageVerifier.new(:email_verification_key).generate(@user.email_address.id)) %> +

+ +

+ By verifying your email address, you can receive site notifications and you can + recover your account if you ever forget your password. +

+ + diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb index cec2f97cc..246c8d7dc 100644 --- a/test/functional/users_controller_test.rb +++ b/test/functional/users_controller_test.rb @@ -119,6 +119,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_redirected_to User.last assert_equal("xxx", User.last.name) + assert_no_emails end should "create a user with a valid email" do @@ -128,6 +129,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_redirected_to User.last assert_equal("xxx", User.last.name) assert_equal("test@gmail.com", User.last.email_address.address) + assert_enqueued_email_with UserMailer, :welcome_user, args: [User.last] end should "not create a user with an invalid email" do @@ -135,7 +137,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest assert_no_difference("User.count") do post users_path, params: { user: user_params } + assert_response :success + assert_no_emails end end diff --git a/test/mailers/previews/user_mailer_preview.rb b/test/mailers/previews/user_mailer_preview.rb index 4913e0a24..3c466e034 100644 --- a/test/mailers/previews/user_mailer_preview.rb +++ b/test/mailers/previews/user_mailer_preview.rb @@ -13,4 +13,9 @@ class UserMailerPreview < ActionMailer::Preview user = User.find(params[:id]) UserMailer.email_change_confirmation(user) end + + def welcome_user + user = User.find(params[:id]) + UserMailer.welcome_user(user) + end end