/// <inheritdoc /> public async Task RemoveClaimMappingAsync(IGuildUser user, ClaimMappingType type, AuthorizationClaim claim) { RequireClaims(AuthorizationClaim.AuthorizationConfigure); using (var transaction = await ClaimMappingRepository.BeginDeleteTransactionAsync()) { var mappingIds = await ClaimMappingRepository.SearchIdsAsync(new ClaimMappingSearchCriteria() { Types = new[] { type }, GuildId = user.Guild.Id, UserId = user.Id, Claims = new[] { claim }, IsDeleted = false, }); if (!mappingIds.Any()) { throw new InvalidOperationException($"A claim mapping of type {type} to claim {claim} for user {user.GetDisplayName()} does not exist"); } await ClaimMappingRepository.TryDeleteAsync(mappingIds.First(), CurrentUserId.Value); transaction.Commit(); } }
/// <inheritdoc /> public async Task UnConfigureGuildAsync(IGuild guild) { foreach (var claimMappingId in await ClaimMappingRepository.SearchIdsAsync(new ClaimMappingSearchCriteria() { GuildId = guild.Id, IsDeleted = false })) { await ClaimMappingRepository.TryDeleteAsync(claimMappingId, DiscordClient.CurrentUser.Id); } }
/// <inheritdoc /> public async Task RemoveClaimMapping(IRole role, ClaimMappingType type, AuthorizationClaim claim) { RequireAuthenticatedUser(); RequireClaims(AuthorizationClaim.AuthorizationConfigure); var mappingIds = (await ClaimMappingRepository.SearchIdsAsync(new ClaimMappingSearchCriteria() { Types = new[] { type }, GuildId = role.Guild.Id, RoleIds = new[] { role.Id }, Claims = new[] { claim }, IsDeleted = false, })); if (!mappingIds.Any()) { throw new InvalidOperationException($"A claim mapping of type {type} to claim {claim} for role {role.Name} does not exist"); } await ClaimMappingRepository.TryDeleteAsync(mappingIds.First(), CurrentUserId.Value); }