Я настраиваю форум с закрытым доступом для автомобильного клуба и столкнулся с проблемами при предоставлении подписчикам доступа к сайту. В данный момент у меня есть собственный код, который проверяет, входит ли пользователь в определенную группу. Если нет, его перенаправляют на наш веб-сайт, где для каждой из трех предлагаемых нами подписок есть ссылки на оплату через Stripe.
Вот код:
<script type="text/discourse-plugin" version="0.8.42">
api.onPageChange((url, title) => {
const allowedGroups = ['Lite', 'Member', 'VIP', 'staff'];
const isUserInAllowedGroup = api.getCurrentUser().groups.some(group => allowedGroups.includes(group.name));
if (!isUserInAllowedGroup) {
window.location.href = "https://centralcoastdriversclub.webflow.io/select-a-plan";
}
});
</script>
Я изучил документацию по установке, настроил три события веб-хуков и строго следовал всем инструкциям, но всё ещё не могу заставить всё работать гладко. Моя первая проблема заключается в том, что при использовании ссылок на покупку товаров из Stripe на моём сайте веб-хуки возвращают ошибку 422 с сообщением «email not found» (электронная почта не найдена) для события checkout.session.completed и «customer not found» (клиент не найден) для события customer.subscription.updated. Это, разумеется, не создаёт подписку в Discourse и не добавляет пользователя в группу. В идеале я хотел бы иметь возможность размещать на своём сайте ссылки, которые переводят людей на страницу конкретной подписки, которую они покупают.
Если я тестирую это через URL форума /s/subscriptions, подписки добавляются в Discourse во вкладке «Подписки», но, к сожалению, пользователи всё ещё не добавляются в соответствующие группы. Также я заметил, что при работе через Discourse используется динамическая ссылка, которая привязывает электронную почту к аккаунту пользователя — интересно!
Как вы, возможно, уже поняли из моего кода и предыдущих объяснений, если пользователь не добавлен в правильную группу, он не может просматривать форум, так как код перенаправляет его.
Я, должно быть, упустил что-то, но, несмотря на все усилия, не могу понять, что именно.
Любая помощь будет очень признательна — спасибо заранее!