Ошибка входа

Мы уже сталкивались с этой ошибкой ранее, я только что выполнил поиск в нашей системе тикетов.

Это происходит, когда:

  • включена опция «требовать активацию» (require activation = true);
  • в Discourse есть пользователь U1 с определённым адресом электронной почты, возможно, с внешним ID A;
  • в провайдере DiscourseConnect есть пользователь U2 с тем же адресом электронной почты, но с другим внешним ID (B).

При входе пользователя Discourse проверяет, существует ли пользователь с внешним ID B. Если такого пользователя нет, то обычно Discourse выполняет сопоставление по адресу электронной почты. Однако, поскольку включена опция «требовать активацию», адрес электронной почты считается ненадёжным, и этот шаг пропускается. В результате пользователь не связывается с U1, так как это могло бы привести к захвату аккаунта.

Таким образом, Discourse решает создать нового пользователя. Однако это не удаётся, поскольку пользователь U1 уже существует с таким же адресом электронной почты.

Было бы полезно, если бы в случае, когда адрес электронной почты уже существует, но считается ненадёжным, выводилась более понятная ошибка. Также непонятно, почему отображается общая ошибка Rails.

Возможные решения:

  • если адреса электронной почты на стороне провайдера DiscourseConnect верифицированы и могут считаться надёжными, установите require_activation = false;
    или
  • измените внешний ID пользователя U1 на B;
    или
  • измените адрес электронной почты пользователя U1 на другой.

Добавляю текст «запрошенное изменение было отклонено», чтобы эта тема находилась при поиске по этой ошибке.