public async Task <PermissionListResponseModel> GetAsync(string providerName, string providerKey)
        {
            var result = new PermissionListResponseModel {
                DisplayName = providerKey, Groups = new List <PermissionGroupModel>()
            };

            foreach (var group in _permissionDefinitionManager.GetGroups())
            {
                PermissionGroupModel permissionGroupModel = new()
                {
                    DisplayName = group.DisplayName,
                    Name        = group.Name,
                    Permissions = new List <PermissionGrantModel>()
                };
                foreach (PermissionDefinition permission in group.GetPermissionsWithChildren())
                {
                    if (permission.IsEnabled && (!permission.AllowedProviders.Any() ||
                                                 permission.AllowedProviders.Contains(providerName)))
                    {
                        PermissionGrantModel permissionGrantModel = new()
                        {
                            Name             = permission.Name,
                            DisplayName      = permission.DisplayName,
                            ParentName       = permission.Parent?.Name !,
                            AllowedProviders = permission.AllowedProviders
                        };
                        if (permission.AllowedProviders.Any() && !permission.AllowedProviders.Contains(providerName))
                        {
                            throw new ApplicationException($"The permission named {permission.Name} has not compatible with the provider named {providerName}");
                        }
                        if (!permission.IsEnabled)
                        {
                            throw new ApplicationException($"The permission named {permission.Name} is disabled");
                        }
                        PermissionGrant permissionGrant = await _permissionGrantRepository.FindAsync(permission.Name, providerName, providerKey);

                        permissionGrantModel.IsGranted = permissionGrant != null;
                        permissionGroupModel.Permissions.Add(permissionGrantModel);
                    }
                }
                if (permissionGroupModel.Permissions.Any())
                {
                    result.Groups.Add(permissionGroupModel);
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
        {
            await CheckProviderPolicy(providerName);

            var result = new GetPermissionListResultDto
            {
                EntityDisplayName = providerKey,
                Groups            = new List <PermissionGroupDto>()
            };

            foreach (var group in _permissionDefinitionManager.GetGroups())
            {
                var groupDto = new PermissionGroupDto
                {
                    Name        = group.Name,
                    DisplayName = group.DisplayName.Localize(_stringLocalizerFactory),
                    Permissions = new List <PermissionGrantInfoDto>()
                };

                foreach (var permission in group.GetPermissionsWithChildren())
                {
                    if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
                    {
                        continue;
                    }

                    var grantInfoDto = new PermissionGrantInfoDto
                    {
                        Name             = permission.Name,
                        DisplayName      = permission.DisplayName.Localize(_stringLocalizerFactory),
                        ParentName       = permission.Parent?.Name,
                        AllowedProviders = permission.Providers,
                        GrantedProviders = new List <ProviderInfoDto>()
                    };

                    var grantInfo = await _permissionManager.GetAsync(permission.Name, providerName, providerKey);

                    grantInfoDto.IsGranted = grantInfo.IsGranted;

                    foreach (var provider in grantInfo.Providers)
                    {
                        grantInfoDto.GrantedProviders.Add(new ProviderInfoDto
                        {
                            ProviderName = provider.Name,
                            ProviderKey  = provider.Key,
                        });
                    }

                    groupDto.Permissions.Add(grantInfoDto);
                }

                if (groupDto.Permissions.Any())
                {
                    result.Groups.Add(groupDto);
                }
            }

            return(result);
        }
Ejemplo n.º 4
0
        public virtual Task<List<AuthPolicyDto>> GetAuthPolicies()
        {
            var result = new List<AuthPolicyDto>();
            var groups = _permissionDefinitionManager.GetGroups();
            var multiTenancySide = CurrentTenant.GetMultiTenancySide();
            foreach (var group in groups)
            {
                if (group.Permissions.Count == 0)
                {
                    continue;
                }

                foreach (var permission in group.Permissions)
                {
                    if (!permission.MultiTenancySide.HasFlag(multiTenancySide))
                    {
                        continue;
                    }

                    var policy = new AuthPolicyDto()
                    {
                        Name = permission.Name,
                        DisplayName = permission.DisplayName.Localize(_stringLocalizerFactory),
                        Children = new List<AuthPolicyDto>
                        {
                            new AuthPolicyDto
                            {
                                Name = permission.Name,
                                DisplayName = permission.DisplayName.Localize(_stringLocalizerFactory)
                            }
                        }
                    };
                    result.Add(policy);

                    foreach (var c in permission.Children)
                    {
                        if (!c.MultiTenancySide.HasFlag(multiTenancySide))
                        {
                            continue;
                        }

                        policy.Children.Add(new AuthPolicyDto
                        {
                            Name = c.Name,
                            DisplayName = c.DisplayName.Localize(_stringLocalizerFactory)
                        });
                    }
                }

                
            }

            return Task.FromResult(result);
        }
Ejemplo n.º 5
0
        // GET: Role/Permissions/5
        public async Task <IActionResult> Permissions(string id)
        {
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound());
            }

            var claims = await _roleManager.GetClaimsAsync(role);

            var groups = _permissionDefinitionManager.GetGroups();

            var model = new PermissionsViewModel
            {
                Groups = groups.Select(p1 =>
                {
                    var claim1 = new Claim(p1.Name, p1.Name);
                    return(new PermissionGroupViewModel
                    {
                        Name = p1.Name,
                        DisplayName = p1.DisplayName,
                        IsGranted = claims.Any(m => m.Type == claim1.Type && m.Value == claim1.Value),
                        Permissions = p1.Permissions.Select(p2 =>
                        {
                            var claim2 = new Claim(p1.Name, p2.Name);
                            return new PermissionGrantViewModel
                            {
                                Name = p2.Name,
                                DisplayName = p2.DisplayName,
                                IsGranted = claims.Any(m => m.Type == claim2.Type && m.Value == claim2.Value),
                                Children = p2.Children.Select(p3 =>
                                {
                                    var claim3 = new Claim(p1.Name, p3.Name);
                                    return new PermissionGrantViewModel
                                    {
                                        Name = p3.Name,
                                        DisplayName = p3.DisplayName,
                                        IsGranted = claims.Any(m => m.Type == claim3.Type && m.Value == claim3.Value),
                                    };
                                }).ToList()
                            };
                        }).ToList()
                    });
                }).ToList()
            };

            return(View(model));
        }
Ejemplo n.º 6
0
        public async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
        {
            var result = new GetPermissionListResultDto
            {
                Groups = new List <PermissionGroupDto>()
            };

            foreach (var group in _permissionDefinitionManager.GetGroups())
            {
                var groupDto = new PermissionGroupDto
                {
                    Name        = group.Name,
                    DisplayName = group.Name, //TODO: DisplayName
                    Permissions = new List <PermissionGrantInfoDto>()
                };

                foreach (var permission in group.GetPermissionsWithChildren())
                {
                    var grantInfoDto = new PermissionGrantInfoDto
                    {
                        Name        = permission.Name,
                        DisplayName = permission.Name, //TODO: Add DisplayName to permission definition
                        ParentName  = permission.Parent?.Name,
                        Providers   = new List <ProviderInfoDto>()
                    };

                    var grantInfo = await _permissionManager.GetAsync(permission.Name, providerName, providerKey);

                    grantInfoDto.IsGranted = grantInfo.IsGranted;

                    foreach (var provider in grantInfo.Providers)
                    {
                        grantInfoDto.Providers.Add(new ProviderInfoDto
                        {
                            ProviderName = provider.Name,
                            ProviderKey  = provider.Key,
                        });
                    }

                    groupDto.Permissions.Add(grantInfoDto);
                }

                result.Groups.Add(groupDto);
            }

            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取权限
        /// </summary>
        /// <param name="providerName"></param>
        /// <param name="providerKey"></param>
        /// <returns></returns>
        public async Task <PermissionListResult> GetAsync(string providerName, string providerKey)
        {
            await CheckProviderPolicy(providerName);

            var result = new PermissionListResult
            {
                //EntityDisplayName = providerKey,
                //Groups = new List<PermissionGroupDto>()
            };

            //var multiTenancySide = CurrentTenant.GetMultiTenancySide();

            foreach (var group in _permissionDefinitionManager.GetGroups())
            {
                var groupDto = new PermissionGroupDto
                {
                    Name        = group.Name,
                    DisplayName = group.DisplayName,
                    Permissions = new List <PermissionGrantInfoDto>()
                };

                foreach (var permission in group.GetPermissionsWithChildren())
                {
                    if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
                    {
                        continue;
                    }

                    //if (!permission.MultiTenancySide.HasFlag(multiTenancySide))
                    //{
                    //    continue;
                    //}

                    var grantInfo = await _permissionManager.GetAsync(permission.Name, providerName, providerKey);

                    var grantInfoDto = new PermissionGrantInfoDto
                    {
                        Name             = permission.Name,
                        DisplayName      = permission.DisplayName,
                        ParentName       = permission.Parent?.Name,
                        AllowedProviders = permission.Providers,
                        IsGranted        = grantInfo.IsGranted,
                        GrantedProviders = new List <ProviderInfoDto>(),
                    };

                    foreach (var provider in grantInfo.Providers)
                    {
                        grantInfoDto.GrantedProviders.Add(new ProviderInfoDto
                        {
                            ProviderName = provider.Name,
                            ProviderKey  = provider.Key,
                        });
                    }

                    groupDto.Permissions.Add(grantInfoDto);
                }

                if (groupDto.Permissions.Any())
                {
                    //result.Groups.Add(groupDto);
                }
            }

            return(result);
        }
Ejemplo n.º 8
0
 public void Should_Permission_Definition_GetGroup()
 {
     _permissionDefinitionManager.GetGroups().Count.ShouldBe(1);
 }
Ejemplo n.º 9
0
 public void GetGroups()
 {
     _permissionDefinitionManager.GetGroups().Count.ShouldBe(1);
     _permissionDefinitionManager.GetGroups()[0].Name.ShouldBe("PermissionGroup_Test_1");
 }