Объединение учётных записей пользователей

:bookmark: В этом руководстве объясняется, как объединить несколько пользовательских учетных записей в одну учетную запись Discourse. Здесь описаны способы объединения пользователей, не являющихся сотрудниками, через интерфейс Discourse и сотрудников — через консоль.

:person_raising_hand: Требуемый уровень доступа: Администратор

Объединение пользовательских учетных записей в Discourse позволяет объединить несколько учетных записей в одну. Этот процесс может быть полезен в нескольких сценариях:

  1. Когда пользователь создает несколько учетных записей, возможно, забыв о своей предыдущей регистрации.
  2. Если пользователь создает новую учетную запись с новым адресом электронной почты вместо обновления существующего.
  3. Когда пользователь хочет объединить несколько учетных записей, используемых для разных целей (например, личных, рабочих или для тестирования), в одну.

Объединение пользователей, не являющихся сотрудниками

Администраторы могут объединять пользователей, не являющихся сотрудниками, непосредственно через интерфейс Discourse.

:warning: Это действие необратимо. Исходная учетная запись пользователя будет удалена после объединения.

Чтобы объединить двух пользователей, не являющихся сотрудниками:

  1. Перейдите на страницу администрирования пользователя для исходного пользователя (учетной записи, из которой вы хотите объединить данные).
  2. Прокрутите страницу до конца.
  3. Нажмите кнопку «Объединить» (Merge).
  4. В первом всплывающем окне введите имя пользователя целевой учетной записи (учетной записи, в которую вы хотите объединить данные) и нажмите «Перенести и удалить» (Transfer & Delete).
  5. Появится диалоговое окно подтверждения. Введите текст подтверждения, указанный на экране (например, transfer @source to @target), и нажмите «Перенести и удалить» (Transfer & Delete), чтобы начать процесс объединения.

:information_source: Объединение крупных учетных записей может требовать значительных ресурсов и занять некоторое время в зависимости от объема данных, связанных с исходным пользователем.

Что объединяется?

При объединении пользовательских учетных записей Discourse объединяет данные из более чем 50 таблиц, включая:

  • Сообщения и темы
  • Полученные и выставленные лайки
  • Личные сообщения
  • Информация профиля пользователя
  • Настройки и предпочтения пользователя
  • Действия и активность пользователя (например, закладки, просмотры тем)
  • Бейджи и достижения
  • Уровень доверия и членство в группах
  • Связанные учетные записи (например, социальные логины)

В случае конфликтов сохраняются данные целевого пользователя. Если у обоих пользователей была связанная анонимная учетная запись, та, которая принадлежала исходному пользователю, будет потеряна.

:warning: Входящие ссылки, ссылающиеся на исходного пользователя (например, https://discourse.example.com/t/some-topic/17/3?u=source_username), не будут связаны с целевым пользователем после объединения.

Важное примечание об объединении пользователей и DiscourseConnect

Объединение пользовательских учетных записей может потенциально повлиять на DiscourseConnect (ранее SSO) в зависимости от реализации:

  • Если DiscourseConnect основан на адресе электронной почты, проблем быть не должно, если в системе DiscourseConnect используется адрес электронной почты целевой учетной записи. Обратите внимание, что адрес электронной почты исходного пользователя станет вторичным адресом на целевой учетной записи после объединения, что может вызвать проблемы с входом, если этот адрес позже будет использован с DiscourseConnect. При необходимости рассмотрите возможность удаления вторичных адресов электронной почты после объединения.
  • Если система DiscourseConnect использует уникальный идентификатор пользователя, отличный от идентификатора пользователя Discourse, объединение может вызвать проблемы, если уникальный идентификатор исходной учетной записи не будет правильно сопоставлен с целевой учетной записью.

Объединение пользователей-сотрудников

По соображениям безопасности объединение пользователей-сотрудников должно выполняться через консоль.

:information_source: Если ваш сайт размещается на Discourse, свяжитесь с team@discourse.org за помощью в объединении пользователей-сотрудников.

Чтобы объединить пользователей-сотрудников через консоль:

root@host:/var/discourse# ./launcher enter app
root@host-app:/var/www/discourse# rake users:merge['source_username','target_username']

Users merged!

root@host-app:/var/www/discourse#

:warning: Убедитесь, что перед запятой и после него в команде нет пробелов.

Частые вопросы

В: Что произойдет, если процесс объединения, похоже, застрял?
О: Если экран прогресса объединения не показывает изменений в течение длительного времени, попробуйте обновить страницу. Возможно, объединение уже завершено, но интерфейс не обновился.

В: Могу ли я отменить объединение пользователей?
О: Нет, как только два пользователя объединены, это действие нельзя отменить. Исходная учетная запись пользователя будет удалена безвозвратно после объединения.

В: Влияет ли объединение пользователей на их сообщения и темы?
О: Все сообщения и темы исходного пользователя будут перенесены на целевого пользователя. Авторство этих элементов изменится, чтобы отражать целевого пользователя как создателя.

10 лайков

Пост был разделён на новую тему: Кнопка объединения пользователей исчезла на моём сайте

Мы также обнаружили еще одну сложную ситуацию, связанную со слиянием и SSO.

  1. Пользователь создает учетную запись SSO в Организации A с адресом электронной почты first.last@organizationA.com.
  2. Пользователь переходит в Организацию B и создает учетную запись SSO с адресом электронной почты first.last@organizationB.com.
  3. Мы объединяем две учетные записи.
    1. Основным адресом электронной почты пользователя теперь является first.last@organizationB.com.
    2. НО процесс слияния оставляет адрес first.last@organizationA.com как ВТОРОСТЕПЕННЫЙ адрес электронной почты.
  4. Пользователь возвращается обратно в Организацию A, пытается войти через SSO с адресом first.last@organizationA.com и оказывается застрявшим в следующем цикле входа с сообщением Discourse: Подождите, вы отправляете слишком много запросов.

Чтобы исправить это, мы удалили адрес first.last@organizationA.com из списка ВТОРОСТЕПЕННЫХ адресов электронной почты объединенной учетной записи на шаге №3. Это создало еще одну новую учетную запись, которую мы затем объединили с учетной записью first.last@organizationB.com.

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

1 лайк

Почему так происходит? (Почему они не объединяются?)

Я читал, как объединять аккаунты здесь, но в форуме, где я администратор, кнопки «Объединить» рядом с кнопкой «Анонимизировать пользователя» нет? :man_shrugging:

При объединении аккаунтов какой из них сохраняется? Как вы обеспечиваете сохранение именно нужного аккаунта? Вы объединяете аккаунты, начиная с того, который хотите удалить, или с того, который хотите оставить?

Используя терминологию, описанную выше, пользователь «source» удаляется, а его сообщения и другие данные переносятся на пользователя «target». Я сделал это впервые пару дней назад, и всё прошло без проблем.

2 лайка