public async Task <ApplicationAuthConfigurationDto> GetAuthConfigAsync()
        {
            var authConfig = new ApplicationAuthConfigurationDto();


            foreach (var policyName in await _abpAuthorizationPolicyProvider.GetPoliciesNamesAsync())
            {
                authConfig.Policies[policyName] = true;

                if (await _authorizationService.IsGrantedAsync(policyName))
                {
                    authConfig.GrantedPolicies[policyName] = true;
                }
            }

            foreach (var group in _permissionDefinitionManager.GetGroups())
            {
                authConfig.Policies[group.Name] = true;


                authConfig.GrantedPolicies[group.Name] = true;
            }

            return(authConfig);
        }
Exemplo n.º 2
0
        protected virtual async Task <ApplicationAuthConfigurationDto> GetAuthConfigAsync()
        {
            var authConfig = new ApplicationAuthConfigurationDto();

            var permissions = _permissionDefinitionManager.GetPermissions();

            IEnumerable <PermissionGrant> grantPermissions = new List <PermissionGrant>();

            // TODO: 重写为每次调用接口都在数据库统一查询权限
            // 待框架改进权限Provider机制后再移除

            // 如果用户已登录,获取用户和角色权限
            if (CurrentUser.IsAuthenticated)
            {
                var userPermissions = await _permissionGrantRepository.GetListAsync(UserPermissionValueProvider.ProviderName,
                                                                                    CurrentUser.GetId().ToString());

                grantPermissions = grantPermissions.Union(userPermissions);
                foreach (var userRole in CurrentUser.Roles)
                {
                    var rolePermissions = await _permissionGrantRepository.GetListAsync(RolePermissionValueProvider.ProviderName,
                                                                                        userRole);

                    grantPermissions = grantPermissions.Union(rolePermissions);
                }
            }

            // 如果客户端已验证,获取客户端权限
            if (CurrentClient.IsAuthenticated)
            {
                var clientPermissions = await _permissionGrantRepository.GetListAsync(ClientPermissionValueProvider.ProviderName,
                                                                                      CurrentClient.Id);

                grantPermissions = grantPermissions.Union(clientPermissions);
            }

            foreach (var permission in permissions)
            {
                authConfig.Policies[permission.Name] = true;
                if (grantPermissions.Any(p => p.Name.Equals(permission.Name)))
                {
                    authConfig.GrantedPolicies[permission.Name] = true;
                }
            }

            return(authConfig);
        }
Exemplo n.º 3
0
    protected virtual async Task <ApplicationAuthConfigurationDto> GetAuthConfigAsync()
    {
        var authConfig = new ApplicationAuthConfigurationDto();

        var policyNames = await _abpAuthorizationPolicyProvider.GetPoliciesNamesAsync();

        var abpPolicyNames   = new List <string>();
        var otherPolicyNames = new List <string>();

        foreach (var policyName in policyNames)
        {
            if (await _defaultAuthorizationPolicyProvider.GetPolicyAsync(policyName) == null && _permissionDefinitionManager.GetOrNull(policyName) != null)
            {
                abpPolicyNames.Add(policyName);
            }
            else
            {
                otherPolicyNames.Add(policyName);
            }
        }

        foreach (var policyName in otherPolicyNames)
        {
            authConfig.Policies[policyName] = true;

            if (await _authorizationService.IsGrantedAsync(policyName))
            {
                authConfig.GrantedPolicies[policyName] = true;
            }
        }

        var result = await _permissionChecker.IsGrantedAsync(abpPolicyNames.ToArray());

        foreach (var(key, value) in result.Result)
        {
            authConfig.Policies[key] = true;
            if (value == PermissionGrantResult.Granted)
            {
                authConfig.GrantedPolicies[key] = true;
            }
        }

        return(authConfig);
    }