Мы уже сталкивались с этой ошибкой ранее, я только что выполнил поиск в нашей системе тикетов.
Это происходит, когда:
- включена опция «требовать активацию» (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 на другой.
Добавляю текст «запрошенное изменение было отклонено», чтобы эта тема находилась при поиске по этой ошибке.