Exemple #1
0
 private void GroupGrantAllChanged(bool value, PermissionGroupDto permissionGroup)
 {
     foreach (var permission in permissionGroup.Permissions)
     {
         if (!IsDisabledPermission(permission))
         {
             SetPermissionGrant(permission, value);
         }
     }
 }
Exemple #2
0
        public async Task <object> GetPermissionsByRole(OneParam param)
        {
            var rolePermissions = await _roleManager.GetGrantedPermissionsAsync(param.Id);

            var allPermissons   = _permissionManager.GetAllPermissions().ToList();
            var permissionGroup = new List <PermissionGroupDto>();

            foreach (var item in allPermissons.Where(m => m.Children.Count() > 0))
            {
                PermissionGroupDto tempData = item.MapTo <PermissionGroupDto>();
                tempData.PermissionGroups = item.Children.ToList().MapTo <List <PermissionListDto> >();
                permissionGroup.Add(tempData);
            }
            return(new { allPermissons = permissionGroup, rolePermissions = rolePermissions.Select(m => m.Name).ToList() });
        }
Exemple #3
0
        private void PermissionChanged(bool value, PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission)
        {
            SetPermissionGrant(permission, value);

            if (value && permission.ParentName != null)
            {
                var parentPermission = GetParentPermission(permissionGroup, permission);

                SetPermissionGrant(parentPermission, true);
            }
            else if (value == false)
            {
                var childPermissions = GetChildPermissions(permissionGroup, permission);

                foreach (var childPermission in childPermissions)
                {
                    SetPermissionGrant(childPermission, false);
                }
            }
        }
Exemple #4
0
 private List <PermissionGrantInfoDto> GetChildPermissions(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission)
 {
     return(permissionGroup.Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList());
 }
Exemple #5
0
 private PermissionGrantInfoDto GetParentPermission(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission)
 {
     return(permissionGroup.Permissions.First(x => x.Name == permission.ParentName));
 }
        /// <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);
        }
Exemple #7
0
        public virtual async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
        {
            await CheckProviderPolicy(providerName);

            var result = new GetPermissionListResultDto
            {
                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.Localize(StringLocalizerFactory),
                    Permissions = new List <PermissionGrantInfoDto>()
                };

                foreach (var permission in group.GetPermissionsWithChildren())
                {
                    if (!permission.IsEnabled)
                    {
                        continue;
                    }

                    if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
                    {
                        continue;
                    }

                    if (!permission.MultiTenancySide.HasFlag(multiTenancySide))
                    {
                        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);
        }
Exemple #8
0
    public virtual async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
    {
        await CheckProviderPolicy(providerName);

        var result = new GetPermissionListResultDto
        {
            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.Localize(StringLocalizerFactory),
                Permissions = new List <PermissionGrantInfoDto>()
            };

            var neededCheckPermissions = new List <PermissionDefinition>();

            foreach (var permission in group.GetPermissionsWithChildren()
                     .Where(x => x.IsEnabled)
                     .Where(x => !x.Providers.Any() || x.Providers.Contains(providerName))
                     .Where(x => x.MultiTenancySide.HasFlag(multiTenancySide)))
            {
                if (await SimpleStateCheckerManager.IsEnabledAsync(permission))
                {
                    neededCheckPermissions.Add(permission);
                }
            }

            if (!neededCheckPermissions.Any())
            {
                continue;
            }

            var grantInfoDtos = neededCheckPermissions.Select(x => new PermissionGrantInfoDto
            {
                Name             = x.Name,
                DisplayName      = x.DisplayName.Localize(StringLocalizerFactory),
                ParentName       = x.Parent?.Name,
                AllowedProviders = x.Providers,
                GrantedProviders = new List <ProviderInfoDto>()
            }).ToList();

            var multipleGrantInfo = await PermissionManager.GetAsync(neededCheckPermissions.Select(x => x.Name).ToArray(), providerName, providerKey);

            foreach (var grantInfo in multipleGrantInfo.Result)
            {
                var grantInfoDto = grantInfoDtos.First(x => x.Name == grantInfo.Name);

                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);
    }
        public virtual async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
        {
            var permissionListResult = new GetPermissionListResultDto
            {
                EntityDisplayName = providerKey,
                Groups            = new List <PermissionGroupDto>()
            };
            var multiTenancySide = CurrentTenant.GetMultiTenancySide();
            var permissionGroups = PermissionDefinitionManager.GetGroups();
            IEnumerable <PermissionGrant> permissions =
                await PermissionGrantRepository.GetListAsync(providerName, providerKey);

            // 如果是当前用户权限,还需要查询角色权限
            if (providerName.Equals("U"))
            {
                var userId = CurrentUser.GetId().ToString();
                if (providerKey.Equals(userId))
                {
                    foreach (var role in CurrentUser.Roles)
                    {
                        var rolePermissions = await PermissionGrantRepository
                                              .GetListAsync(RolePermissionValueProvider.ProviderName, role);

                        permissions = permissions.Union(rolePermissions);
                    }
                }
            }
            foreach (var permissionGroup in permissionGroups)
            {
                var groupDto = new PermissionGroupDto
                {
                    Name        = permissionGroup.Name,
                    DisplayName = permissionGroup.DisplayName.Localize(StringLocalizerFactory),
                    Permissions = new List <PermissionGrantInfoDto>()
                };
                foreach (var permission in permissionGroup.GetPermissionsWithChildren())
                {
                    if (!permission.IsEnabled)
                    {
                        continue;
                    }

                    if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
                    {
                        continue;
                    }

                    if (!permission.MultiTenancySide.HasFlag(multiTenancySide))
                    {
                        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 grantedPermissions = permissions.Where(p => p.Name.Equals(permission.Name));

                    foreach (var grantedPermission in grantedPermissions)
                    {
                        grantInfoDto.IsGranted = true;
                        grantInfoDto.GrantedProviders.Add(new ProviderInfoDto
                        {
                            ProviderKey  = grantedPermission.ProviderKey,
                            ProviderName = grantedPermission.ProviderName
                        });
                    }

                    groupDto.Permissions.Add(grantInfoDto);
                }

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

            return(permissionListResult);
        }