Похоже, что в одном из последних обновлений отключена возможность регистрации с тем же адресом электронной почты, включающим символ «+» для обозначения нового адреса. Моя система сильно зависит от этой функции. Как её снова включить?
Я сделал точно так же, но не смог воспроизвести проблему на актуальном коде, работающем в продакшене — всё работало как ожидалось при отключённой настройке normalize emails:
похоже, что нормализованный адрес электронной почты заблокирован.
Я имею в виду, что если email@gmail.com заблокирован, то и email+1@gmail.com тоже заблокирован. Это странно для меня, когда у меня не выбрана опция нормализации электронной почты.
В данном случае мы почти наверняка блокируем подадреса заблокированных адресов, независимо от настройки, в качестве меры против вредительства, поскольку опция нормализации не является настройкой по умолчанию.
«Показывать только переопределённые» в настройках. Но теперь я подозреваю, что нам не стоит об этом беспокоиться.
Вернувшись к своему рабочему столу, я изучил фактический код, отвечающий за этот отказ:
Сразу в начале мы проверяем канонический адрес электронной почты на соответствие чёрному списку:
def self.canonical(email)
name, domain = email.split("@", 2)
name = name.gsub(/\+.*/, "")
name = name.gsub(".", "") if %w[gmail.com googlemail.com].include?(domain.downcase)
"#{name}@#{domain}".downcase
end
И даже если это не сработает, проверка будет выполнена с помощью алгоритма расстояния Левенштейна Levenshtein distance здесь: