我是新手,并且一直在学习示例代码。我遇到了这个检查允许访问级别的指令。我需要用一个我可以调用的函数替换它:
router.get('/', functioname(user.role), musicians.findAll);
即只有在此函数返回true时才允许访问此路径,否则为false。
我不需要更新任何CSS,但需要根据函数返回的信息限制路径。
如何在此处获取访问级别和角色?
但是,我有这个指令,我需要用同样可以使用的函数替换它。
angular.module('angular-client-side-auth')
.directive('accessLevel', ['Auth', function(Auth) {
return {
restrict: 'A',
link: function($scope, element, attrs) {
var prevDisp = element.css('display')
, userRole
, accessLevel;
$scope.user = Auth.user;
$scope.$watch('user', function(user) {
if(user.role)
userRole = user.role;
updateCSS();
}, true);
attrs.$observe('accessLevel', function(al) {
if(al) accessLevel = $scope.$eval(al);
updateCSS();
});
function updateCSS() {
if(userRole && accessLevel) {
if(!Auth.authorize(accessLevel, userRole))
element.css('display', 'none');
else
element.css('display', prevDisp);
}
}
}
};
}])
正在使用此服务:
angular.module('angular-client-side-auth')
.factory('Auth', function($http, $cookieStore){
var accessLevels = routingConfig.accessLevels
, userRoles = routingConfig.userRoles
, currentUser = $cookieStore.get('user') || { username: '', role: userRoles.public };
$cookieStore.remove('user');
function changeUser(user) {
angular.extend(currentUser, user);
}
return {
authorize: function(accessLevel, role) {
if(role === undefined) {
role = currentUser.role;
}
return accessLevel.bitMask & role.bitMask;
} }
我可以帮忙解决这个问题吗?