mirror of
https://github.com/docusealco/docuseal
synced 2026-11-06 06:52:33 -05:00
handle 2fa email bounce
This commit is contained in:
1 parent
e316d2006f
commit
9ad281d457
7 files changed
+84
No files matched your search
@@ -11,6 +11,7 @@ module Submitters
|
||||
}.freeze
|
||||
|
||||
UnableToSendCode = Class.new(StandardError)
|
||||
BouncedEmail = Class.new(UnableToSendCode)
|
||||
InvalidOtp = Class.new(StandardError)
|
||||
MaliciousFileExtension = Class.new(StandardError)
|
||||
ParamsError = Class.new(StandardError)
|
||||
@@ -243,6 +244,12 @@ module Submitters
|
||||
def send_shared_link_email_verification_code(submitter, request:)
|
||||
RateLimit.call("send-otp-code-#{request.remote_ip}", limit: 2, ttl: 45.seconds, enabled: true)
|
||||
|
||||
if Docuseal.multitenant? && email_bounced_recently?(submitter.email)
|
||||
Rollbar.warning("Bounced OTP email for template: #{submitter.submission.template.id}") if defined?(Rollbar)
|
||||
|
||||
raise BouncedEmail, I18n.t(:verification_email_bounced)
|
||||
end
|
||||
|
||||
TemplateMailer.otp_verification_email(submitter.submission.template, email: submitter.email).deliver_later!
|
||||
rescue RateLimit::LimitApproached
|
||||
Rollbar.warning("Limit verification code for template: #{submitter.submission.template.id}") if defined?(Rollbar)
|
||||
@@ -250,6 +257,11 @@ module Submitters
|
||||
raise UnableToSendCode, I18n.t('too_many_attempts')
|
||||
end
|
||||
|
||||
def email_bounced_recently?(email)
|
||||
EmailEvent.exists?(email:, event_type: %w[bounce soft_bounce permanent_bounce],
|
||||
event_datetime: 24.hours.ago..Time.current)
|
||||
end
|
||||
|
||||
def verify_link_otp!(otp, submitter)
|
||||
return false if otp.blank?
|
||||
|
||||
|
||||
Reference in new issue
Block a user