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