allows managers to create users without email

allows managers to create users without email

hides email preferences from account page for email-less users

prevents email delivery to users with no email

adds spec for user creation from management

adds specs for user's email requirement

adds spec for no deliveries if no email
This commit is contained in:
Juanjo Bazán
2017-06-15 13:09:45 +02:00
parent 40563ffc64
commit 315c57929a
12 changed files with 210 additions and 61 deletions

View File

@@ -1,4 +1,6 @@
class Mailer < ApplicationMailer
after_action :prevent_delivery_to_users_without_email
helper :text_with_links
helper :mailer
helper :users
@@ -6,8 +8,10 @@ class Mailer < ApplicationMailer
def comment(comment)
@comment = comment
@commentable = comment.commentable
@email_to = @commentable.author.email
with_user(@commentable.author) do
mail(to: @commentable.author.email, subject: t('mailers.comment.subject', commentable: t("activerecord.models.#{@commentable.class.name.underscore}", count: 1).downcase)) if @commentable.present? && @commentable.author.present?
mail(to: @email_to, subject: t('mailers.comment.subject', commentable: t("activerecord.models.#{@commentable.class.name.underscore}", count: 1).downcase)) if @commentable.present? && @commentable.author.present?
end
end
@@ -16,96 +20,108 @@ class Mailer < ApplicationMailer
@commentable = @reply.commentable
parent = Comment.find(@reply.parent_id)
@recipient = parent.author
@email_to = @recipient.email
with_user(@recipient) do
mail(to: @recipient.email, subject: t('mailers.reply.subject')) if @commentable.present? && @recipient.present?
mail(to: @email_to, subject: t('mailers.reply.subject')) if @commentable.present? && @recipient.present?
end
end
def email_verification(user, recipient, token, document_type, document_number)
@user = user
@recipient = recipient
@email_to = recipient
@token = token
@document_type = document_type
@document_number = document_number
with_user(user) do
mail(to: @recipient, subject: t('mailers.email_verification.subject'))
mail(to: @email_to, subject: t('mailers.email_verification.subject'))
end
end
def unfeasible_spending_proposal(spending_proposal)
@spending_proposal = spending_proposal
@author = spending_proposal.author
@email_to = @author.email
with_user(@author) do
mail(to: @author.email, subject: t('mailers.unfeasible_spending_proposal.subject', code: @spending_proposal.code))
mail(to: @email_to, subject: t('mailers.unfeasible_spending_proposal.subject', code: @spending_proposal.code))
end
end
def direct_message_for_receiver(direct_message)
@direct_message = direct_message
@receiver = @direct_message.receiver
@email_to = @receiver.email
with_user(@receiver) do
mail(to: @receiver.email, subject: t('mailers.direct_message_for_receiver.subject'))
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: @sender.email, subject: t('mailers.direct_message_for_sender.subject'))
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
with_user(user) do
mail(to: user.email, subject: t('mailers.proposal_notification_digest.title', org_name: Setting['org_name']))
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, subject: t('mailers.user_invite.subject', org_name: Setting["org_name"]))
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: @investment.author.email, subject: t('mailers.budget_investment_created.subject'))
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: @author.email, subject: t('mailers.budget_investment_unfeasible.subject', code: @investment.code))
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: @author.email, subject: t('mailers.budget_investment_selected.subject', code: @investment.code))
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: @author.email, subject: t('mailers.budget_investment_unselected.subject', code: @investment.code))
mail(to: @email_to, subject: t('mailers.budget_investment_unselected.subject', code: @investment.code))
end
end
@@ -116,4 +132,11 @@ class Mailer < ApplicationMailer
block.call
end
end
def prevent_delivery_to_users_without_email
if @email_to.blank?
mail.perform_deliveries = false
end
end
end