Шаги для воспроизведения
- Перейдите на
/my/messages
- Нажмите «Новое сообщение»
- Введите адрес электронной почты, который не привязан ни к одному существующему пользователю
- Напишите и отправьте сообщение.
Это отправит письмо и создаст пользователя в статусе «ожидание».
- В панели администратора активируйте пользователя.
a. В моём случае мой сайт требует одобрения новых аккаунтов, поэтому мне также пришлось одобрить пользователя. Не уверен, насколько это универсально.
- Пользователь получает письмо:
Вы были одобрены на …
Сотрудник одобрил ваш аккаунт на …
Теперь вы можете получить доступ к своему новому аккаунту, войдя по адресу:
- Пользователь переходит по указанной в письме ссылке.
Ожидаемый результат
Пользователь может войти в систему
Фактический результат
-
В диалоговом окне входа при вводе адреса электронной почты и выборе «Пропустить пароль; отправить мне ссылку для входа» появляется сообщение «Аккаунт не найден …».
-
При нажатии «Забыли пароль», а затем «Сбросить пароль» появляется сообщение «Аккаунт не найден …».
-
Пользователь может создать новый аккаунт с этим адресом электронной почты, но (по крайней мере, в моих тестах) это снова переводит его в статус «неактивен» и отправляет письмо «Подтвердите свой новый аккаунт». Это не то, чего можно ожидать после того, как ему уже сообщили: «Вы были одобрены»…
Дополнительная бонусная проблема: сообщение, которое я отправил из Discourse в первый раз, когда столкнулся с этой проблемой, содержало ссылку-приглашение. Пользователи не могли воспользоваться этой ссылкой-приглашением:
Я воспроизвёл проблему без ссылки-приглашения, поэтому не упоминал её в описании воспроизведения, но указываю здесь, так как это, возможно, ещё один намёк, который поможет понять, в какое странное состояние мне удалось привести учётные записи.
Интересно, что вы можете активировать пользователя со статусом «ожидает регистрации» через страницу администратора пользователей. Пользователи со статусом «ожидает регистрации» не должны входить в систему, поэтому возможность их активации кажется нелогичной. Такие пользователи могут превратиться в полноценных пользователей, создав учётную запись, после чего получат доступ ко всем сообщениям, в которых они ранее участвовали только по электронной почте.
Так что один из вариантов для вас — просто не делать этого.
Когда вы хотите пригласить кого-то на свой сайт, пригласите его обычным способом, а не создавая пользователя со статусом «ожидает регистрации» через электронную почту.
Но, возможно, мы сможем предотвратить такое поведение на случай, если с ним столкнутся другие. Я проведу быстрый тест на своём сайте, чтобы проверить, смогу ли я воспроизвести эту ситуацию.
1 лайк
Хорошо, мне удалось воспроизвести это на моем сайте. Действительно, можно активировать пользователя в режиме ожидания, что неверно. Отличное замечание!
2 лайка
Это имеет смысл!
Я смог подтвердить, что для пользователя в статусе «staged» (который ещё не активирован) это работает отлично. Если бы я, продолжив своё первоначальное сообщение, отправил приглашения напрямую (то есть выбрал «Ограничить этим адресом электронной почты», а затем нажал кнопку «Отправить приглашение по электронной почте») на эти адреса, они могли бы просто перейти по ссылке приглашения и создать учётную запись.
Однако я не могу сделать это для активированного пользователя в статусе «staged»: в этом случае попытка пригласить его завершается ошибкой, так как этот адрес электронной почты уже связан с учётной записью.
Но поскольку пользователь в статусе «staged» никогда не должен быть активирован, это не должно стать проблемой 
Разумеется, это было приглашение с ограничением «N использований». Не уверен, влияет ли это на возможность использования ссылки приглашения, но, учитывая то, что мы уже выяснили, подозреваю, что эта ссылка сработала бы нормально, если бы я не активировал учётные записи заранее.
1 лайк