Технически пользователь не «использует» устаревший хеш пароля.
Когда пользователь впервые входит в систему после миграции и пароль не совпадает с паролем Discourse (который изначально представляет собой случайную строку символов), плагин выполняет свою работу:
- он проверяет, совпадает ли введённый пароль с пользовательским полем
import_pass, используя все известные ему методы хеширования; - если совпадение найдено, он сохраняет пароль для пользователя, а затем удаляет пользовательское поле
import_pass.
Таким образом, через несколько лет поле import_pass останется только у тех пользователей, которые не использовали мигрированный пароль для входа.
а) они никогда не входили в систему (это можно проверить по дате последнего посещения);
б) они не использовали мигрированный пароль, а вошли через электронную почту, другой метод аутентификации или сбросили свой пароль.
Я только что осознал, что ситуация б может создать проблему безопасности. Если пользователь не помнит свой пароль и меняет его или использует другой метод аутентификации, мигрированный хеш пароля всё ещё будет сохранён и может быть использован наряду с новым паролем. Я только что выпустил обновление для плагина, которое теперь очищает пользовательское поле import_pass при каждом успешном входе в систему.
Таким образом, в дальнейшем пользовательское поле import_pass будет присутствовать только у тех пользователей, которые никогда не входили в систему.