Как заблокировать пользователя, если пробная версия заканчивается, но нет платной подписки

Я использую промежуточное ПО 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 и напомнить им, но, к сожалению, не все получат, чтобы ввести свои данные. Мне нужно иметь возможность заблокировать тех, кто еще не заплатил, использование моего сервиса после окончания пробного периода. Если есть что-то еще, что я должен добавить, пожалуйста, дайте мне знать, и я включу это.

0 ответов

Другие вопросы по тегам