我正在创建一个具有许多角色的网站。
在我的模型中,用户角色是一个数组。因此,用户可以堆叠多个角色。
范例:
user.role = ['artist', 'premium'];
在用户情况下,用户可以创建一个项目并在创建时付款。它是免费的。
我的问题是:
管理高级职位的最佳实践是什么?
我考虑了两种释放方法:
在付款页面中,我用
Auth.isPremium() === true
进行检查。但是我认为这是一个非常糟糕的做法。我为高级帐户创建了另一条路线。我将在路由提供者期间检查角色,如下所示:
$routeProvider.when('/project/:type', { templateUrl: 'app/project/form/form.html', controller: 'ProjectFormCtrl', access: { requiresLogin: true, requiredPermissions: ['premium'] }, })
我错了吗?
感谢前进!
最佳答案
所以我这样做了:
用户使用其数据查询以创建他的项目。
如果服务器响应402(需要付款),则用户必须为发布付费。
$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);
因此,我为“付款和发布”创建了另一条路线。
支付是一种中间件。
app.route('/projects/pay')
.post(users.requiresLogin, projects.pay, users.hasCredits, //pay and check credits
multer({ dest: 'uploads/'}), projects.create); // done