Привет. Я новичок в Discourse. У меня есть приложение, работающее на AWS, которое использует Cognito для аутентификации. Я хочу связать это приложение с новым форумом на хостинге Discourse. У меня уже есть хорошие начальные шаги, но я надеюсь, что кто-то сможет дать рекомендации по завершающим этапам настройки.
Цель — сделать процесс входа бесшовным между моим приложением и форумом Discourse. То есть:
-
Если пользователь вошёл в моё приложение, то при переходе на форум Discourse распознаёт это и не требует повторного входа.
-
Аналогично, если пользователь сначала заходит на форум Discourse и не авторизован, Discourse должен перенаправить его на страницу входа моего приложения (или на размещённый интерфейс входа, если это необходимо).
Плагин OpenId Connect Authentication Plugin кажется идеально подходящим для этой задачи. Я оформил бизнес-план в Discourse, чтобы гарантировать возможность использования этого плагина.
Я прошёл инструкции, предоставленные @david, и выполнил то, что считаю правильной настройкой на стороне Cognito:
-
Из Cognito я получил «документ обнаружения OpenID Connect» и «client ID OpenID Connect».
-
В настройках Discourse в разделе openId_Connect я добавил эти данные и сохранил их.
-
Я включил «аутентификацию через OpenID Connect» и в поле «openid connect authorize scope» указал «openid email». Эти настройки также сохранены.
Согласно описанию плагина, этого должно быть достаточно, верно?
Однако, когда я вхожу в своё приложение, а затем перехожу на форум, ничего не происходит. Отображается обычная главная страница с кнопками «Зарегистрироваться» и «Войти». Я надеялся, что после проверки с Cognito меня автоматически авторизует, но этого не происходит. Что ещё нужно сделать?
Кроме того, если пользователь приходит на сайт форума впервые (никогда не входивший в моё приложение), он не должен видеть кнопки регистрации и входа в Discourse — вместо этого он должен видеть кнопку, нажатие на которую перенаправит его на страницу входа моего приложения. Как это добавить?
И наконец, пользователи подписываются на моё приложение и платят за использование премиум-функций. Эта информация сохраняется как пользовательские атрибуты в Cognito (существует пользовательский атрибут, указывающий, подписан пользователь или нет). Только подписанные пользователи должны иметь возможность публиковать сообщения на форуме. Таким образом, когда Discourse запрашивает информацию о пользователе у Cognito, он должен проверять пользовательский атрибут и разрешать публикацию только в случае активной подписки. Как это реализовать?
Будучи новичком в Discourse, я был бы очень благодарен за любую информацию по этим вопросам. Спасибо!