По непонятной мне причине Discourse не позволяет пользователям подключать или управлять уже подключёнными внешними аккаунтами (например, связанным аккаунтом Discord). Код Discourse, по-видимому, использует следующую логику для определения того, может ли пользователь обновлять свои связанные аккаунты:
canUpdateAssociatedAccounts(
secondFactorEnabled,
canCheckEmails,
isAnonymous
) {
if (secondFactorEnabled || !canCheckEmails || isAnonymous) {
return false;
}
return findAll().length > 0;
}
Почему переменная secondFactorEnabled учитывается здесь?
Мои пользователи очень запутались, так как оказались в странной ситуации. Они зарегистрировали аккаунт на нашем сайте, привязали его к аккаунту Discord, чтобы получить доступ к нашему серверу Discord, а затем включили двухфакторную аутентификацию (2FA) для своего аккаунта. После этого раздел «Связанные аккаунты» полностью исчез со страницы их профиля! Они больше не могут видеть или управлять своим связанным аккаунтом, пока включена 2FA.
У нас есть ещё один пользователь, который был очень сбит с толку: он создал аккаунт, включил 2FA и не смог следовать нашим инструкциям по добавлению связанного аккаунта, потому что раздел «Связанные аккаунты» вообще никогда не отображался для него.
Единственное, что объединяет этих двух пользователей с другими пользователями, у которых нет такой проблемы, — это то, что у обоих включена 2FA.
Я хотел бы предоставить своим пользователям возможность одновременно иметь включённую 2FA на своём форуме и иметь возможность привязать свой аккаунт к аккаунту Discord.
Я размещаю этот запрос в категории Support, но не уверен, является ли это на самом деле bug. В любом случае, похоже, что обходного пути нет без внесения изменений в код Discourse.