Только для локальной разработки. Не подходит для продакшн-сайтов
При работе с Discourse локально полезно иметь возможность тестировать все различные методы входа. В большинстве случаев нас не интересует сам процесс аутентификации, нам просто нужно знать, как Discourse отреагирует на разные входные данные. Например:
- Что произойдет, если email не подтвержден?
- Что произойдет, если провайдер аутентификации не отправит нам адрес электронной почты?
- Что произойдет, если провайдер аутентификации не отправит нам имя пользователя?
- Что произойдет, если email совпадает, но не совпадает UID?
- Как работают приглашения при использовании внешней аутентификации?
- Как выглядит экран входа?
- (Я мог бы продолжать бесконечно… но вы поняли суть)
До сих пор единственным реальным вариантом было «настроить реальную аутентификацию Google/Twitter/OAuth2 и т. д. в вашей среде разработки». Это работает, но невероятно утомительно, а затем вы оказываетесь в ситуации, когда вам приходится создавать несколько учетных записей Google/Twitter для тестирования различных комбинаций.
Я создал что-то более оптимизированное:
Если вы установите этот плагин локально, он предоставит вам фейкового провайдера аутентификации. Для Discourse он работает так же, как и любой другой провайдер (например, Google, Twitter, OAuth2, OIDC и т. д.).
При запуске процесса входа вам будет показан этот экран, где вы сможете вручную ввести любые данные. Введенные значения будут сохраняться через cookie, поэтому вы сможете легко повторять одно и то же действие. Поля соответствуют схеме хэша аутентификации Omniauth.
Он использует систему ManagedAuthenticator, поэтому данные будут сохраняться в таблице user_associated_accounts с provider_name равным developmentauth.
Он также поддерживает DiscourseConnect! Чтобы протестировать это, просто установите плагин и включите настройку enable_discourse_connect. При следующем входе вы увидите все поля DiscourseConnect, готовые к использованию.
Пожалуйста, попробуйте его в следующий раз, когда будете работать с аутентификацией, и дайте мне знать, если есть что-то, что можно улучшить ![]()
Обратите внимание, что это самый небезопасный плагин аутентификации, когда-либо созданный. Поэтому он откажется запускаться в продакшн-среде, и вы должны установить переменную окружения
DISCOURSE_DEV_ALLOW_ANON_TO_IMPERSONATEв значение1, чтобы он работал



