Хорошо, я нашёл обходной путь, который «исправляет» проблему с входом через Patreon. Ниже приведены инструкции. ![]()
Вам понадобятся:
- Любой плагин, предоставляющий шорткод для отображения формы входа (у меня на сайте установлен WooCommerce, поэтому я использовал шорткод
[woocommerce_my_account], который делает именно это для неавторизованных пользователей). - Плагин Members, который предоставляет шорткоды
[members_logged_in]и[members_not_logged_in]для скрытия/отображения контента в зависимости от того, вошёл ли пользователь в систему. Можно использовать любой другой плагин с аналогичной функциональностью шорткодов. - Плагин Shortcode Redirect.
Идея состоит в создании специальной страницы, которая отображает форму входа (и кнопку входа через Patreon) для неавторизованных пользователей. Если же пользователь уже вошёл в систему, страница должна перенаправлять его на URL https://community.morevnaproject.org/session/sso?return_path=%2F.
(Очевидно, что вам нужно заменить «community.morevnaproject.org» на свой домен).
Моя специальная страница входа содержит следующее:
[members_not_logged_in]
[woocommerce_my_account]
[patreon_login_button]
[/members_not_logged_in]
[members_logged_in]
[redirect url='https://community.morevnaproject.org/session/sso?return_path=%2F' sec='0']
[/members_logged_in]
(вы можете увидеть это в действии здесь — Log In / Register — Morevna Project)
Затем всё, что нужно сделать, — это настроить плагин WP-Discourse для использования этой страницы в SSO:
Когда пользователь нажимает кнопку «Войти» в Discourse, он перенаправляется на мою специальную страницу WordPress. Поскольку пользователь ещё не авторизован, отображается форма входа. Если пользователь нажимает кнопку «Войти через Patreon», его перенаправляют на Patreon для авторизации. После успешной авторизации он возвращается на мою специальную страницу. Так как пользователь теперь вошёл в систему, срабатывает шорткод «redirect»:
[redirect url='https://community.morevnaproject.org/session/sso?return_path=%2F' sec='0']
…и пользователь успешно перенаправляется обратно на форумы Discourse.
Часть URL session/sso?return_path=%2F в конце обязательна, иначе Discourse не распознает пользователя как авторизованного после перенаправления.
Всё! Надеюсь, это поможет другим пользователям, которые хотят настроить SSO WordPress с входом через Patreon на своём сайте. ![]()
