如何在付款时使用 Angular 管理高级帐户?

How to manage Premium Account with Angular at the payment?

我正在创建一个具有多种角色的网站。 在我的模型中,用户角色是一个数组。所以一个用户可以叠加多个角色。

示例:

user.role = ['artist', 'premium'];

在用户案例中,用户可以创建项目并在创建时支付。高级版免费。

我的问题是:

管理高级角色的最佳做法是什么?

我想到了两种发布方式:

  1. 在我的支付页面,我用Auth.isPremium() === true检查。但我认为这是一个非常糟糕的做法。
  2. 我为高级帐户创建了另一条路线。我将在路由提供者期间检查角色为:

    $routeProvider.when('/project/:type', { templateUrl: 'app/project/form/form.html', controller: 'ProjectFormCtrl', access: { requiresLogin: true, requiredPermissions: ['premium'] }, })

我错了吗?

感谢提前!

所以我这样做了:

用户请求查询他的数据以创建他的项目。 如果服务器响应402(Payment require),用户必须为发布付费。

  $http.post('/projects', fd, option)
  .then(function (response) {
    $location.path('/');
  },function (response) {
    if (response.status === 402) {
      $scope.payment = true;
      $scope.error = response.data.message;
      $scope.stripe.publishable = ENV.stripePublishable;
    }
  });

我用中间件查看高级账户

    app.route('/projects')
    .post(users.requiresLogin, users.hasCredits, //check if premium
        multer({ dest: 'uploads/'}), projects.create);

所以我为 "pay and publish" 创建了另一条路线。 支付是一个中间件。

   app.route('/projects/pay')
   .post(users.requiresLogin, projects.pay, users.hasCredits, //pay and check credits
        multer({ dest: 'uploads/'}), projects.create); // done