Files
nairobi/app/mailers/mailer.rb
Julian Herrero ad018c6f39 Send informative email for already confirmed users
Currently the application does not send any email to confirm the
account for already confirmed users. But we show a notice message
that may look like you will recive one:

"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."

In this commit we keep the original message, but send an email to
the user informing them that their account is now registered.

This way no one can know if someone else's account is confirmed and
we don't have to worry about GDPR either.

Co-Authored-By: taitus <sebastia.roig@gmail.com>
2022-04-19 17:03:02 +02:00

173 lines
4.6 KiB
Ruby

class Mailer < ApplicationMailer
after_action :prevent_delivery_to_users_without_email
helper :text_with_links
helper :mailer
helper :users
def comment(comment)
@comment = comment
@commentable = comment.commentable
@email_to = @commentable.author.email
manage_subscriptions_token(@commentable.author)
with_user(@commentable.author) do
subject = t("mailers.comment.subject", commentable: t("activerecord.models.#{@commentable.class.name.underscore}", count: 1).downcase)
mail(to: @email_to, subject: subject) if @commentable.present? && @commentable.author.present?
end
end
def reply(reply)
@email = ReplyEmail.new(reply)
@email_to = @email.to
manage_subscriptions_token(@email.recipient)
with_user(@email.recipient) do
mail(to: @email_to, subject: @email.subject) if @email.can_be_sent?
end
end
def email_verification(user, recipient, token, document_type, document_number)
@user = user
@email_to = recipient
@token = token
@document_type = document_type
@document_number = document_number
with_user(user) do
mail(to: @email_to, subject: t("mailers.email_verification.subject"))
end
end
def direct_message_for_receiver(direct_message)
@direct_message = direct_message
@receiver = @direct_message.receiver
@email_to = @receiver.email
manage_subscriptions_token(@receiver)
with_user(@receiver) do
mail(to: @email_to, subject: t("mailers.direct_message_for_receiver.subject"))
end
end
def direct_message_for_sender(direct_message)
@direct_message = direct_message
@sender = @direct_message.sender
@email_to = @sender.email
with_user(@sender) do
mail(to: @email_to, subject: t("mailers.direct_message_for_sender.subject"))
end
end
def proposal_notification_digest(user, notifications)
@notifications = notifications
@email_to = user.email
manage_subscriptions_token(user)
with_user(user) do
mail(to: @email_to, subject: t("mailers.proposal_notification_digest.title", org_name: Setting["org_name"]))
end
end
def user_invite(email)
@email_to = email
I18n.with_locale(I18n.default_locale) do
mail(to: @email_to, subject: t("mailers.user_invite.subject", org_name: Setting["org_name"]))
end
end
def budget_investment_created(investment)
@investment = investment
@email_to = @investment.author.email
with_user(@investment.author) do
mail(to: @email_to, subject: t("mailers.budget_investment_created.subject"))
end
end
def budget_investment_unfeasible(investment)
@investment = investment
@author = investment.author
@email_to = @author.email
with_user(@author) do
mail(to: @email_to, subject: t("mailers.budget_investment_unfeasible.subject", code: @investment.code))
end
end
def budget_investment_selected(investment)
@investment = investment
@author = investment.author
@email_to = @author.email
with_user(@author) do
mail(to: @email_to, subject: t("mailers.budget_investment_selected.subject", code: @investment.code))
end
end
def budget_investment_unselected(investment)
@investment = investment
@author = investment.author
@email_to = @author.email
with_user(@author) do
mail(to: @email_to, subject: t("mailers.budget_investment_unselected.subject", code: @investment.code))
end
end
def newsletter(newsletter, recipient_email)
@newsletter = newsletter
@email_to = recipient_email
manage_subscriptions_token(User.find_by(email: @email_to))
mail(to: @email_to, from: @newsletter.from, subject: @newsletter.subject)
end
def evaluation_comment(comment, to)
@email = EvaluationCommentEmail.new(comment)
@email_to = to
mail(to: @email_to.email, subject: @email.subject) if @email.can_be_sent?
end
def machine_learning_error(user)
@email_to = user.email
mail(to: @email_to, subject: t("mailers.machine_learning_error.subject"))
end
def machine_learning_success(user)
@email_to = user.email
mail(to: @email_to, subject: t("mailers.machine_learning_success.subject"))
end
def already_confirmed(user)
@email_to = user.email
@user = user
with_user(@user) do
mail(to: @email_to, subject: t("mailers.already_confirmed.subject"))
end
end
private
def with_user(user, &block)
I18n.with_locale(user.locale, &block)
end
def prevent_delivery_to_users_without_email
if @email_to.blank?
mail.perform_deliveries = false
end
end
def manage_subscriptions_token(user)
user.add_subscriptions_token
@token = user.subscriptions_token
end
end