我正在用角度 js 工厂方法编写一个权限函数来检查用户角色。如果用户对象具有这样的角色,那么结果应该为真,否则它应该返回假。我的用户对象是:
administrator:true
company_admin:true
registered:true
manager:true
contact:"987654321" email:"abcd@gmail.com" name:"Anand"
应用模型工厂中的 My Permission 功能是:
$appModel.checkPermission:function($role, $requireAll) {
var data = $rootScope.authUser;
if (angular.isArray($role)) {
angular.forEach($role, function (value, key) {
var hasRole = $appModel.checkPermission(value); //Recursive Function
if (hasRole && !$requireAll) {
return true;
} else if (!hasRole && $requireAll) {
return false;
}
});
return $requireAll;
} else {
if (data.hasOwnProperty($role) && data[$role])
return true;
}
return false;
}
我正在检查以下情况: 1.如果该数组中有多个角色具有“全部必需”条件,则检查用户对象中是否存在多个角色并返回真,否则返回假。
$result= $appModel.checkPermission([registered, company_admin], true);
2.如果该数组中有多个角色,则检查这些多个角色是否存在于用户对象中,如果有任何角色匹配,则返回true,否则返回false。
$result= $appModel.checkPermission([administrator, company_admin,manager,agent], false);
3.如果该数组中有单个角色,则检查用户对象中是否存在角色,如果该角色匹配,则返回 true,否则返回 false。
$result= $appModel.checkPermission(register, false);
上面的代码对于单个角色检查运行良好,但在使用“全部必需”或非“全部必需”条件进行多角色检查的情况下,它不能正常工作并返回 false。