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(); }
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); } }
public void Get() { _permissionDefinitionManager.Get("Permission_Test_1").ShouldNotBeNull(); Should.Throw <PermissionNotFondException>(() => _permissionDefinitionManager.Get("NotFoundPermission")); }