Skip to content

Commit 2d20ebb

Browse files
committed
refactor: use email_validator gem instead of custom regex
- Add email_validator gem for Rails-native email validation - Replace custom EMAIL_REGEX with gem's strict mode - Single source of truth for email validation
1 parent 23d0eb2 commit 2d20ebb

4 files changed

Lines changed: 6 additions & 6 deletions

File tree

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ gem 'csv' # LOCKED: csv was loaded from the standard library, but is not part of
1818
gem 'delayed_job'
1919
gem 'delayed_job_active_record'
2020
gem 'drb' # LOCKED: Added because of pry-remote
21+
gem 'email_validator'
2122
gem 'font_awesome5_rails'
2223
gem 'bootstrap', '~> 5'
2324
gem 'friendly_id'

Gemfile.lock

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ GEM
193193
dotenv (= 3.2.0)
194194
railties (>= 6.1)
195195
drb (2.2.3)
196+
email_validator (2.2.4)
197+
activemodel
196198
erb (6.0.2)
197199
erubi (1.13.1)
198200
execjs (2.10.1)
@@ -635,6 +637,7 @@ DEPENDENCIES
635637
delayed_job_active_record
636638
dotenv-rails
637639
drb
640+
email_validator
638641
fabrication
639642
faker
640643
faraday

app/helpers/email_header_helper.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
module EmailHeaderHelper
2-
EMAIL_REGEX = /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\z/
3-
42
private
53

64
def mail_args(member, subject, from_email = 'meetings@codebar.io', cc = '', bcc = '')
@@ -14,7 +12,7 @@ def mail_args(member, subject, from_email = 'meetings@codebar.io', cc = '', bcc
1412
end
1513

1614
def invalid_email?(email, member_id)
17-
return false if email.present? && email.match?(EMAIL_REGEX)
15+
return false if EmailValidator.valid?(email, mode: :strict)
1816

1917
Rails.logger.warn("[EmailHeaderHelper] Invalid email for member_id=#{member_id}: #{email}")
2018
true

app/models/member.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,10 @@ class Member < ApplicationRecord
2323
has_many :announcements, -> { distinct }, through: :groups
2424
has_many :meeting_invitations
2525

26-
EMAIL_REGEX = /\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\z/
27-
2826
validates :auth_services, presence: true
2927
validates :name, :surname, :email, :about_you, presence: true, if: :can_log_in?
3028
validates :email, uniqueness: true
31-
validates :email, format: { with: EMAIL_REGEX }, if: :can_log_in?
29+
validates :email, email: { mode: :strict }, if: :can_log_in?
3230
validates :about_you, length: { maximum: 255 }
3331

3432
DIETARY_RESTRICTIONS = %w[vegan vegetarian pescetarian halal gluten_free dairy_free other].freeze

0 commit comments

Comments
 (0)