From b1a693e7cf3d7a7e47078a658423334422cb7fe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Thu, 25 May 2023 16:57:43 +0200 Subject: [PATCH] Send different Devise mail for re-confirmations --- app/mailers/devise/mailer.rb | 34 +++++++++++++++++++ .../reconfirmation_instructions.html.erb | 5 +++ config/locales/devise.en.yml | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 app/mailers/devise/mailer.rb create mode 100644 app/views/devise/mailer/reconfirmation_instructions.html.erb diff --git a/app/mailers/devise/mailer.rb b/app/mailers/devise/mailer.rb new file mode 100644 index 0000000..3ff2bb3 --- /dev/null +++ b/app/mailers/devise/mailer.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +if defined?(ActionMailer) + class Devise::Mailer < Devise.parent_mailer.constantize + include Devise::Mailers::Helpers + + def confirmation_instructions(record, token, opts = {}) + @token = token + if record.pending_reconfirmation? + devise_mail(record, :reconfirmation_instructions, opts) + else + devise_mail(record, :confirmation_instructions, opts) + end + end + + def reset_password_instructions(record, token, opts = {}) + @token = token + devise_mail(record, :reset_password_instructions, opts) + end + + def unlock_instructions(record, token, opts = {}) + @token = token + devise_mail(record, :unlock_instructions, opts) + end + + def email_changed(record, opts = {}) + devise_mail(record, :email_changed, opts) + end + + def password_change(record, opts = {}) + devise_mail(record, :password_change, opts) + end + end +end diff --git a/app/views/devise/mailer/reconfirmation_instructions.html.erb b/app/views/devise/mailer/reconfirmation_instructions.html.erb new file mode 100644 index 0000000..2897428 --- /dev/null +++ b/app/views/devise/mailer/reconfirmation_instructions.html.erb @@ -0,0 +1,5 @@ +

Hello <%= @resource.cn %>,

+ +

Please confirm your new email address through the link below:

+ +

<%= link_to 'Confirm my address', confirmation_url(@resource, confirmation_token: @token) %>

diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index 9003184..f696f4d 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -3,7 +3,7 @@ en: devise: confirmations: - confirmed: "Thanks for confirming your email address! Your account has been activated." + confirmed: "Thanks for confirming your email address." send_instructions: "You will receive an email with instructions for how to confirm your email address in a moment." send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes." failure: