用函数

时间:2015-07-29 11:14:22

标签: angularjs node.js

我是新手,并且一直在学习示例代码。我遇到了这个检查允许访问级别的指令。我需要用一个我可以调用的函数替换它:

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;
        } }

我可以帮忙解决这个问题吗?

0 个答案:

没有答案