Миграция паролей из Drupal в Discourse с помощью плагина discourse-migrate-password

  1. Установите и активируйте плагин:
    • Начните с установки плагина Discourse Migrate Password по следующей ссылке:

Плагин Discourse Migrate Password
(discourse-migratepassword/plugin.rb at master · communiteq/discourse-migratepassword · GitHub).

  • После установки активируйте плагин в настройках Discourse. Это позволит перенести небезопасные пароли в Discourse.

  1. Создайте пользовательское поле:
    • В интерфейсе Discourse перейдите к настройкам кастомизации пользователей.
    • Здесь создайте пользовательское поле с именем “import_pass”.

  1. Импортируйте пользователей:

    • Перейдите к импорту одного или нескольких пользователей в Discourse удобным для вас способом.
    • В процессе импорта убедитесь, что для каждого пользователя в поле “import_pass” указан хеш-строка.
  2. Попытка входа:

    • Попробуйте войти в Discourse, используя комбинацию импортированного имени пользователя и хеш-строки.
    • Однако вы можете столкнуться с сообщением об ошибке: “Неверное имя пользователя или пароль”.

  1. Стандартный вход:
    • В качестве альтернативы вы можете успешно войти в Discourse, используя имя пользователя и пароль, связанные с аккаунтом.

Пожалуйста, поделитесь решением, как использовать этот плагин в Discourse для миграции паролей из Drupal в Discourse.
@Discourse

Чтобы Drupal поддерживал импортированных пользователей, необходимо доработать существующие импортеры Drupal так, чтобы они заполняли поле import_pass. Базовый импортер уже поддерживает эту функциональность, поэтому вам нужно лишь передать соответствующее поле базы данных в структуру, которую вы передаёте в create_users, с ключом password. Например, импортер VBulletin делает это здесь.

Для импортеров Drupal это реализовано здесь и здесь.

Шаг 2 — это то, что никогда не требовалось и не будет требоваться. Откуда вы это взяли?

Плагин следует включать только после завершения импорта, а во время импорта он должен оставаться отключённым.

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

  • импортировать пользователей
  • установить и включить плагин

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

Я был бы очень признателен, если бы вы могли предоставить мне дополнительные сведения по этому вопросу. Заранее спасибо за помощь.

Плагин работает путем переопределения метода confirm_password? класса User. Сначала он вызывает оригинальную проверку пароля и ничего не делает, если пароль принят основной логикой Discourse.

Если это не так, он проверяет, есть ли у пользователя пользовательское поле import_pass, и если да, использует все доступные алгоритмы для проверки введенного пароля относительно хеша import_pass.

Если совпадение найдено, введенный пароль сохраняется как пароль пользователя, и пользователю разрешается вход.

Я создал PR, добавляющий поддержку хешей Drupal 6, мигрированных в Drupal 7.

Это может быть причиной того, что учетные данные были признаны недействительными, как описано в этой теме.