Как заблокировать пользователя, если пробная версия заканчивается, но нет платной подписки
Я использую промежуточное ПО stripe-webhook для обработки транзакций по подписке Stripe. В настоящее время у меня есть, чтобы пользователь мог выбрать свой план из /billing
страница, то этот план 14-дневная бесплатная пробная версия. Все это прекрасно работает, но мне интересно, как я могу сделать так, чтобы при входе они не могли получить ничего, кроме /billing
страницу, если их 14 дней истекли, и они еще не добавили свои данные CC. я использую passport-local
как моя стратегия аутентификации. это мой код проверки входа в систему:
exports.isAuthenticated = function(req, res, next) {
if (req.isAuthenticated()){
return next();
}
res.redirect(req.redirect.auth);
};
Который затем вызывается на каждом маршруте, я хочу, чтобы пользователь был вынужден войти в систему.
Вот как я называю промежуточное программное обеспечение сверху:
var stripeWebhook = new StripeWebhook({
stripeApiKey: secrets.stripeOptions.apiKey,
respond: true
});
Я получаю доступ к названию плана, переходя plans[user.stripe.plan].name
и последние 4 номера их CC, делая plans[user.stripe.plan].name
но это в моих шаблонах просмотров. Вы можете получить доступ к учетной записи пользователя в любом месте моего приложения, используя currentUser
в качестве ссылки. Я не знаком со Stripe и webhooks, некоторые примеры кода или кода, которые я мог бы использовать / выучить, были бы потрясающими. Черт возьми, даже указав мне в правильном направлении, было бы хорошо.
Мой регистрационный код просто супер базовый, и пользователю назначен "бесплатный" план из другого места в коде (возникли проблемы с его обнаружением прямо сейчас на мобильном телефоне)
exports.postSignup = function(req, res, next){
req.assert('email', 'Please sign up with a valid email.').isEmail();
req.assert('password', 'Password must be at least 6 characters long').len(6);
var errors = req.validationErrors();
if (errors) {
req.flash('errors', errors);
req.flash('form', {
email: req.body.email
});
return res.redirect('/signup');
}
// calls next middleware to authenticate with passport
passport.authenticate('signup', {
successRedirect: '/dashboard', // Select redirect for post signup
failureRedirect: '/signup',
failureFlash : true
})(req, res, next);
next();
};
У меня есть планы запустить cron
работать с моей базой данных, чтобы я мог сказать, что пользователям все еще нужно ввести свои данные CC и напомнить им, но, к сожалению, не все получат, чтобы ввести свои данные. Мне нужно иметь возможность заблокировать тех, кто еще не заплатил, использование моего сервиса после окончания пробного периода. Если есть что-то еще, что я должен добавить, пожалуйста, дайте мне знать, и я включу это.