コード例 #1
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);
        }
コード例 #2
0
        public async Task GetAsync()
        {
            await _permissionGrantRepository.InsertAsync(new PermissionGrant(
                                                             Guid.NewGuid(),
                                                             "MyPermission1",
                                                             "Test",
                                                             "Test")
                                                         );

            var grantedProviders = await _permissionManager.GetAsync("MyPermission1",
                                                                     "Test",
                                                                     "Test");

            grantedProviders.ShouldNotBeNull();
            grantedProviders.IsGranted.ShouldBeTrue();
            grantedProviders.Name.ShouldBe("MyPermission1");
            grantedProviders.Providers.ShouldContain(x => x.Key == "Test");
        }
コード例 #3
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);
        }
コード例 #4
0
        public static Task <PermissionWithGrantedProviders> GetForRoleAsync([NotNull] this IPermissionManager permissionManager, string roleName, string permissionName)
        {
            Check.NotNull(permissionManager, nameof(permissionManager));

            return(permissionManager.GetAsync(permissionName, RolePermissionValueProvider.ProviderName, roleName));
        }