public async Task DeleteRefreshTokenGrantAsync(TClient client, string sessionId) { if (sessionId.IsNullOrWhiteSpace()) { return; } logger.ScopeTrace($"Delete Refresh Token grant, Route '{RouteBinding.Route}', Session ID '{sessionId}'."); var idKey = new Track.IdKey { TenantName = RouteBinding.TenantName, TrackName = RouteBinding.TrackName }; await idKey.ValidateObjectAsync(); RefreshTokenGrant grant = await tenantRepository.DeleteAsync <RefreshTokenTtlGrant>(idKey, d => d.SessionId == sessionId); if (grant != null) { logger.ScopeTrace($"TTL Refresh Token grant deleted, Refresh Token '{grant.RefreshToken}', Session ID '{sessionId}'."); } else { grant = await tenantRepository.DeleteAsync <RefreshTokenGrant>(idKey, d => d.SessionId == sessionId); if (grant != null) { logger.ScopeTrace($"Refresh Token grant deleted, Refresh Token '{grant.RefreshToken}', Session ID '{sessionId}'."); } } }
public async Task <IActionResult> DeleteTenant(string name) { try { if (!ModelState.TryValidateRequiredParameter(name, nameof(name))) { return(BadRequest(ModelState)); } name = name?.ToLower(); if (name.Equals(Constants.Routes.MasterTenantName, StringComparison.OrdinalIgnoreCase)) { throw new InvalidOperationException("The master tenant can not be deleted."); } var mTracks = await tenantRepository.GetListAsync <Track>(new Track.IdKey { TenantName = name }, whereQuery : p => p.DataType.Equals("track")); foreach (var mTrack in mTracks) { await tenantRepository.DeleteListAsync <DefaultElement>(new Track.IdKey { TenantName = name, TrackName = mTrack.Name }); await tenantRepository.DeleteAsync <Track>(mTrack.Id); if (mTrack.Key.Type == TrackKeyType.KeyVaultRenewSelfSigned) { await externalKeyLogic.DeleteExternalKeyAsync(mTrack.Key.ExternalName); } } var mTenant = await tenantRepository.DeleteAsync <Tenant>(await Tenant.IdFormat(name)); if (!string.IsNullOrEmpty(mTenant?.CustomDomain)) { await tenantCacheLogic.InvalidateCustomDomainCacheAsync(mTenant.CustomDomain); } return(NoContent()); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { logger.Warning(ex, $"NotFound, Delete '{typeof(Api.Tenant).Name}' by name '{name}'."); return(NotFound(typeof(Api.Tenant).Name, name)); } throw; } }
public async Task <IActionResult> DeleteTrack(string name) { try { if (!ModelState.TryValidateRequiredParameter(name, nameof(name))) { return(BadRequest(ModelState)); } name = name?.ToLower(); //TODO delete all sub elements // Waiting for https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/17296813-add-the-ability-to-delete-all-data-in-a-partition // Add the ability to delete ALL data in a partition await tenantRepository.DeleteListAsync <DefaultElement>(new Track.IdKey { TenantName = RouteBinding.TenantName, TrackName = name }); await tenantRepository.DeleteAsync <Track>(await Track.IdFormat(RouteBinding, name)); return(NoContent()); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { logger.Warning(ex, $"NotFound, Delete '{typeof(Api.Track).Name}' by name '{name}'."); return(NotFound(typeof(Api.Track).Name, name)); } throw; } }
public async Task <IActionResult> DeleteTenant(string name) { try { if (!ModelState.TryValidateRequiredParameter(name, nameof(name))) { return(BadRequest(ModelState)); } name = name?.ToLower(); if (name.Equals(Constants.Routes.MasterTenantName, StringComparison.OrdinalIgnoreCase)) { throw new InvalidOperationException("The master track can not be deleted."); } //TODO delete all sub elements // Waiting for https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/17296813-add-the-ability-to-delete-all-data-in-a-partition // Add the ability to delete ALL data in a partition var mTracks = await tenantRepository.GetListAsync <Track>(new Track.IdKey { TenantName = name }, whereQuery : p => p.DataType.Equals("track")); foreach (var mTrack in mTracks) { await tenantRepository.DeleteListAsync <DefaultElement>(new Track.IdKey { TenantName = name, TrackName = mTrack.Name }); await tenantRepository.DeleteAsync <Track>(mTrack.Id); } await tenantRepository.DeleteAsync <Tenant>(await Tenant.IdFormat(name)); return(NoContent()); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { logger.Warning(ex, $"NotFound, Delete '{typeof(Api.Tenant).Name}' by name '{name}'."); return(NotFound(typeof(Api.Tenant).Name, name)); } throw; } }
public async Task DeleteAsync(Guid id) { var tenant = await _tenantRepository.FindAsync(id); if (tenant == null) { return; } await _tenantRepository.DeleteAsync(tenant); }
public async Task <IResponseOutput> DeleteAsync(long id) { var result = false; if (id > 0) { result = (await _tenantRepository.DeleteAsync(m => m.Id == id)) > 0; } return(ResponseOutput.Result(result)); }
public async Task Cache_Should_Invalidator_When_Tenant_Changed() { var acme = await _tenantRepository.FindByNameAsync("acme"); acme.ShouldNotBeNull(); // FindAsync will cache tenant. await _tenantStore.FindAsync(acme.Id); await _tenantStore.FindAsync(acme.Name); (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldNotBeNull(); (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldNotBeNull(); await _tenantRepository.DeleteAsync(acme); (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(acme.Id, null))).ShouldBeNull(); (await _cache.GetAsync(TenantCacheItem.CalculateCacheKey(null, acme.Name))).ShouldBeNull(); var volosoft = await _tenantRepository.FindByNameAsync("volosoft"); volosoft.ShouldNotBeNull(); // Find will cache tenant. _tenantStore.Find(volosoft.Id); _tenantStore.Find(volosoft.Name); (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldNotBeNull(); (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldNotBeNull(); await _tenantRepository.DeleteAsync(volosoft); (_cache.Get(TenantCacheItem.CalculateCacheKey(volosoft.Id, null))).ShouldBeNull(); (_cache.Get(TenantCacheItem.CalculateCacheKey(null, volosoft.Name))).ShouldBeNull(); }
public async Task <IResponseOutput> DeleteAsync(long id) { //删除角色权限 await _rolePermissionRepository.Where(a => a.Role.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync(); //删除用户角色 await _userRoleRepository.Where(a => a.User.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync(); //删除用户 await _userRepository.Where(a => a.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync(); //删除角色 await _roleRepository.Where(a => a.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync(); //删除租户 await _tenantRepository.DeleteAsync(id); return(ResponseOutput.Ok()); }
protected async Task <IActionResult> Delete(string name) { try { if (!ModelState.TryValidateRequiredParameter(name, nameof(name))) { return(BadRequest(ModelState)); } await tenantService.DeleteAsync <MParty>(await GetId(name)); return(NoContent()); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { logger.Warning(ex, $"Delete '{typeof(AParty).Name}' by id '{name}'."); return(NotFound(typeof(AParty).Name, name)); } throw; } }
public async Task <IActionResult> DeleteTrack(string name) { try { if (!ModelState.TryValidateRequiredParameter(name, nameof(name))) { return(BadRequest(ModelState)); } name = name?.ToLower(); var mTrack = await tenantRepository.GetTrackByNameAsync(new Track.IdKey { TenantName = RouteBinding.TenantName, TrackName = name }); await tenantRepository.DeleteListAsync <DefaultElement>(new Track.IdKey { TenantName = RouteBinding.TenantName, TrackName = name }); await tenantRepository.DeleteAsync <Track>(await Track.IdFormat(RouteBinding, name)); if (mTrack.Key.Type == TrackKeyType.KeyVaultRenewSelfSigned) { await externalKeyLogic.DeleteExternalKeyAsync(mTrack.Key.ExternalName); } return(NoContent()); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { logger.Warning(ex, $"NotFound, Delete '{typeof(Api.Track).Name}' by name '{name}'."); return(NotFound(typeof(Api.Track).Name, name)); } throw; } }
public async Task <IActionResult> DeleteUser(string email) { try { if (!ModelState.TryValidateRequiredParameter(email, nameof(email))) { return(BadRequest(ModelState)); } email = email?.ToLower(); await tenantRepository.DeleteAsync <Models.User>(await Models.User.IdFormat(RouteBinding, email)); return(NoContent()); } catch (CosmosDataException ex) { if (ex.StatusCode == HttpStatusCode.NotFound) { logger.Warning(ex, $"NotFound, Delete '{typeof(Api.User).Name}' by email '{email}'."); return(NotFound(typeof(Api.User).Name, email)); } throw; } }
public Task <int> Delete(string keyValue) { return(service.DeleteAsync(t => t.Id == keyValue)); }