fix email typos

This commit is contained in:
Alex Turchyn
2023-09-17 09:27:41 +03:00
parent a1a0205d33
commit 84e879bad0
6 changed files with 19 additions and 6 deletions
+1
View File
@@ -11,6 +11,7 @@ gem 'cancancan'
gem 'devise' gem 'devise'
gem 'devise-two-factor' gem 'devise-two-factor'
gem 'dotenv', require: false gem 'dotenv', require: false
gem 'email_typo'
gem 'faraday' gem 'faraday'
gem 'google-cloud-storage', require: false gem 'google-cloud-storage', require: false
gem 'hexapdf' gem 'hexapdf'
+2
View File
@@ -158,6 +158,7 @@ GEM
rake (>= 12.0.0, < 14.0.0) rake (>= 12.0.0, < 14.0.0)
docile (1.4.0) docile (1.4.0)
dotenv (2.8.1) dotenv (2.8.1)
email_typo (0.2.3)
erb_lint (0.4.0) erb_lint (0.4.0)
activesupport activesupport
better_html (>= 2.0.1) better_html (>= 2.0.1)
@@ -574,6 +575,7 @@ DEPENDENCIES
devise devise
devise-two-factor devise-two-factor
dotenv dotenv
email_typo
erb_lint erb_lint
factory_bot_rails factory_bot_rails
faker faker
+3 -1
View File
@@ -47,7 +47,9 @@ class StartFormController < ApplicationController
private private
def submitter_params def submitter_params
params.require(:submitter).permit(:email) params.require(:submitter).permit(:email).tap do |attrs|
attrs[:email] = Submissions.normalize_email(attrs[:email])
end
end end
def load_template def load_template
+1 -1
View File
@@ -47,7 +47,7 @@ class User < ApplicationRecord
ADMIN_ROLE = 'admin' ADMIN_ROLE = 'admin'
].freeze ].freeze
EMAIL_REGEXP = /[^@,\s]+@[^@,\s]+/ EMAIL_REGEXP = /[^@;,<>\s]+@[^@;,<>\s]+/
belongs_to :account belongs_to :account
has_one :access_token, dependent: :destroy has_one :access_token, dependent: :destroy
+1 -1
View File
@@ -21,7 +21,7 @@
<%= f.fields_for resource do |ff| %> <%= f.fields_for resource do |ff| %>
<div class="form-control <%= 'hidden' if (params[:oauth_callback] || params[:sign_up]) && resource.email? %>"> <div class="form-control <%= 'hidden' if (params[:oauth_callback] || params[:sign_up]) && resource.email? %>">
<%= ff.label :email, class: 'label' %> <%= ff.label :email, class: 'label' %>
<%= ff.email_field :email, required: true, class: 'base-input' %> <%= ff.email_field :email, value: EmailTypo.call(resource.email), required: true, class: 'base-input' %>
</div> </div>
<% end %> <% end %>
<%= f.fields_for resource.account do |ff| %> <%= f.fields_for resource.account do |ff| %>
+11 -3
View File
@@ -32,7 +32,7 @@ module Submissions
emails.map do |email| emails.map do |email|
submission = template.submissions.new(created_by_user: user, source:, template_submitters: template.submitters) submission = template.submissions.new(created_by_user: user, source:, template_submitters: template.submitters)
submission.submitters.new(email:, submission.submitters.new(email: normalize_email(email),
uuid: template.submitters.first['uuid'], uuid: template.submitters.first['uuid'],
sent_at: mark_as_sent ? Time.current : nil) sent_at: mark_as_sent ? Time.current : nil)
@@ -55,12 +55,13 @@ module Submissions
next if uuid.blank? next if uuid.blank?
is_order_sent = submitters_order == 'random' || index.zero? is_order_sent = submitters_order == 'random' || index.zero?
email = normalize_email(submitter_attrs[:email])
submission.submitters.new( submission.submitters.new(
email: submitter_attrs[:email], email:,
phone: submitter_attrs[:phone].to_s.gsub(/[^0-9+]/, ''), phone: submitter_attrs[:phone].to_s.gsub(/[^0-9+]/, ''),
name: submitter_attrs[:name], name: submitter_attrs[:name],
sent_at: mark_as_sent && submitter_attrs[:email].present? && is_order_sent ? Time.current : nil, sent_at: mark_as_sent && email.present? && is_order_sent ? Time.current : nil,
values: submitter_attrs[:values] || {}, values: submitter_attrs[:values] || {},
uuid: uuid:
) )
@@ -81,4 +82,11 @@ module Submissions
end end
end end
end end
def normalize_email(email)
return if email.blank?
return email.downcase if email.to_s.include?(',')
EmailTypo.call(email.delete_prefix('<'))
end
end end