AngularJS |角度权限角色验证

时间:2016-08-21 01:07:39

标签: angularjs permissions

Hello Oh Holy stackoverflow!

我正在尝试使用角度权限为我的应用创建三个角色。用户,管理员和合作伙伴。我阅读了整个维基,这就是我想出的:

.run(function (PermPermissionStore, PermRoleStore) {

var userPermissionsArray = ['seeUserDashboard'];
var adminPermissionsArray = ['seeAdminDashboard'];
var partnerPermissionsArray = ['seePartnerDashboard'];

PermRoleStore
.defineManyRoles({
    'USER' : userPermissionsArray,
    'ADMIN' : adminPermissionsArray,
    'PARTNER' : partnerPermissionsArray
});

PermPermissionStore
.defineManyPermissions(userPermissionsArray, function (permissionName) {
    return _.contains(userPermissionsArray, permissionName);
});
PermPermissionStore
.defineManyPermissions(adminPermissionsArray, function (permissionName) {
    return _.contains(userPermissionsArray, permissionName);
});
PermPermissionStore
.defineManyPermissions(partnerPermissionsArray, function (permissionName) {
    return _.contains(userPermissionsArray, permissionName);
});

})

我的问题是这个。如何验证当前会话并为其分配特定角色?另外,我是否正确地为角色分配权限?我的想法是运行一个验证API调用,API将吐出客户端令牌解析的角色。我想做这样的事情但是defineManyRoles没有回复承诺!

PermRoleStore
.defineManyRoles({
    'USER' : userPermissionsArray,
    'ADMIN' : adminPermissionsArray,
    'PARTNER' : partnerPermissionsArray
})
.then(function onSuccess() {
    return $http.put('/api/validation/global')
    .then(function onSuccess(res) {
        return $q.resolve();
    })
    .catch(function onError(res) {
        return $q.reject();
    });
})
.catch(function onError(res) {
    console.log(res);
});

1 个答案:

答案 0 :(得分:0)

在我使用

删除项目的角度权限之前,我已经这样做了
PermPermissionStore.defineManyPermissions($rootScope.authService.getPermissionGroups(), function (stateParams, permissionName) {
    var deferred = $q.defer();

    if(angular.isDefined($rootScope.authService.userId)) {
        $rootScope.authService.userPromise
            .then(function (data) {
                if($rootScope.authService.hasPermission(permissionName)) {
                    deferred.resolve();
                } else {
                    deferred.reject();
                }
            }).catch(function () {
                deferred.reject();
            });
    } else {
        deferred.reject();
    }

    return deferred.promise;
});