Пример #1
0
        public async Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, IEnumerable <PermissionUpdateRequestModel> requestModels)
        {
            foreach (PermissionUpdateRequestModel requestModel in requestModels)
            {
                var permission = _permissionDefinitionManager.Get(requestModel.Name);

                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(requestModel.Name, providerName, providerKey);

                if (requestModel.IsGranted && permissionGrant is null)
                {
                    await _permissionGrantRepository.InsertAsync(new PermissionGrant { Name = requestModel.Name, ProviderName = providerName, ProviderKey = providerKey });
                }

                if (!requestModel.IsGranted && permissionGrant is not null)
                {
                    await _permissionGrantRepository.DeleteAsync(permissionGrant);
                }
            }

            await _permissionGrantRepository.UnitOfWork.SaveChangesAsync();
        }
Пример #2
0
        public async Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
        {
            await CheckProviderPolicy(providerName);

            foreach (var permissionDto in input.Permissions)
            {
                var permissionDefinition = _permissionDefinitionManager.Get(permissionDto.Name);
                if (permissionDefinition.Providers.Any() &&
                    !permissionDefinition.Providers.Contains(providerName))
                {
                    throw new ApplicationException($"The permission named '{permissionDto.Name}' has not compatible with the provider named '{providerName}'");
                }

                await _permissionManager.SetAsync(permissionDto.Name, providerName, providerKey, permissionDto.IsGranted);
            }
        }
Пример #3
0
 public void Get()
 {
     _permissionDefinitionManager.Get("Permission_Test_1").ShouldNotBeNull();
     Should.Throw <PermissionNotFondException>(() => _permissionDefinitionManager.Get("NotFoundPermission"));
 }