Project

General

Profile

Feature #29208 » 29208-utilize-normalize.patch

Go MAEDA, 2024-08-12 12:42

View differences:

app/models/email_address.rb
36 36
    :if => Proc.new {|email| email.address_changed? && email.address.present?}
37 37
  validate :validate_email_domain, :if => proc {|email| email.address.present?}
38 38

  
39
  safe_attributes 'address'
40

  
41
  def address=(arg)
42
    normalized_address = arg.to_s.strip
43

  
44
    # Convert internationalized domain name (IDN) to Punycode
45
    # e.g. 'marie@société.example' => 'marie@xn--socit-esab.example'
39
  normalizes :address, with: lambda { |address|
40
    normalized_address = address.to_s.strip
46 41
    local_part, _at, domain = normalized_address.partition('@')
47 42
    if domain.present?
43
      # Convert internationalized domain name (IDN) to Punycode
44
      # e.g. 'marie@société.example' => 'marie@xn--socit-esab.example'
48 45
      ascii_domain = Addressable::IDNA.to_ascii(domain)
49 46
      normalized_address = "#{local_part}@#{ascii_domain}"
50 47
    end
48
    normalized_address
49
  }
51 50

  
52
    write_attribute(:address, normalized_address)
53
  end
51
  safe_attributes 'address'
54 52

  
55 53
  def destroy
56 54
    if is_default?
(10-10/10)