我正在尝试检查用户访问级别,以便在服务中授予他一些操作。
exports.hasAdminAccess = function(req, res, next) {
if (hasAccessLevel(req.user, adminLevel)) {
return next()
}
res.redirect('/accessProblem');
}
function hasAccessLevel(user, level) {
UserRole = models.UserRole;
return UserRole.findOne({
where: {
id: user.userRoleId,
}
}).then(function(role){
if (role.accessLevel <= level) {
return true;
} else {
return false;
}
});
}
但hasAccessLevel()
不断返回Promise
对象true
或false
。
我可以在hasAccessLevel
中编写hasAdminAccessLevel
的正文,但我还有很多其他方法可用于其他角色。
还有其他方法可以执行此操作吗?
答案 0 :(得分:1)
您可以通过以下hasAdminAccess
方法解决承诺:
exports.hasAdminAccess = function(req,res,next) {
hasAccessLevel(req.user,adminLevel)
.then((value) => {
if (value) {
return next();
}
})
.catch(() => res.redirect('/accessProblem'));
}
function hasAccessLevel(user, level) {
UserRole = models.UserRole;
return UserRole.findOne({
where: {
id: user.userRoleId,
}
}).then(function(role){
if (role.accessLevel <= level) {
return true;
} else {
return false;
}
});
}