diff --git a/Gemfile b/Gemfile index 471e5b9b..63efe6c7 100644 --- a/Gemfile +++ b/Gemfile @@ -11,6 +11,7 @@ gem 'cancancan' gem 'devise' gem 'devise-two-factor' gem 'dotenv', require: false +gem 'email_typo' gem 'faraday' gem 'google-cloud-storage', require: false gem 'hexapdf' diff --git a/Gemfile.lock b/Gemfile.lock index 8deb63e3..d07463b2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -158,6 +158,7 @@ GEM rake (>= 12.0.0, < 14.0.0) docile (1.4.0) dotenv (2.8.1) + email_typo (0.2.3) erb_lint (0.4.0) activesupport better_html (>= 2.0.1) @@ -574,6 +575,7 @@ DEPENDENCIES devise devise-two-factor dotenv + email_typo erb_lint factory_bot_rails faker diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index beebfd39..8e8d27d6 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -47,7 +47,9 @@ class StartFormController < ApplicationController private 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 def load_template diff --git a/app/models/user.rb b/app/models/user.rb index 9470107a..ca73b30e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -47,7 +47,7 @@ class User < ApplicationRecord ADMIN_ROLE = 'admin' ].freeze - EMAIL_REGEXP = /[^@,\s]+@[^@,\s]+/ + EMAIL_REGEXP = /[^@;,<>\s]+@[^@;,<>\s]+/ belongs_to :account has_one :access_token, dependent: :destroy diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index e89ed2ad..ca60bd9f 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -21,7 +21,7 @@ <%= f.fields_for resource do |ff| %>