Browse Source

Merge pull request #4872 from abpframework/maliming/id4-client-delete

Delete related entities when deleting Identity Server Client.
pull/5022/head
Yunus Emre Kalkan 6 years ago
committed by GitHub
parent
commit
e8065c5d7a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 50
      modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/Clients/ClientRepository.cs

50
modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/Clients/ClientRepository.cs

@ -53,6 +53,56 @@ namespace Volo.Abp.IdentityServer.Clients
return await DbSet.AnyAsync(c => c.Id != expectedId && c.ClientId == clientId, cancellationToken: cancellationToken);
}
public override async Task DeleteAsync(Guid id, bool autoSave = false, CancellationToken cancellationToken = default)
{
foreach (var clientGrantType in DbContext.Set<ClientGrantType>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientGrantType>().Remove(clientGrantType);
}
foreach (var clientRedirectUri in DbContext.Set<ClientRedirectUri>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientRedirectUri>().Remove(clientRedirectUri);
}
foreach (var clientPostLogoutRedirectUri in DbContext.Set<ClientPostLogoutRedirectUri>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientPostLogoutRedirectUri>().Remove(clientPostLogoutRedirectUri);
}
foreach (var clientScope in DbContext.Set<ClientScope>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientScope>().Remove(clientScope);
}
foreach (var clientSecret in DbContext.Set<ClientSecret>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientSecret>().Remove(clientSecret);
}
foreach (var clientClaim in DbContext.Set<ClientClaim>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientClaim>().Remove(clientClaim);
}
foreach (var clientIdPRestriction in DbContext.Set<ClientIdPRestriction>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientIdPRestriction>().Remove(clientIdPRestriction);
}
foreach (var clientCorsOrigin in DbContext.Set<ClientCorsOrigin>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientCorsOrigin>().Remove(clientCorsOrigin);
}
foreach (var clientProperty in DbContext.Set<ClientProperty>().Where(x => x.ClientId == id))
{
DbContext.Set<ClientProperty>().Remove(clientProperty);
}
await base.DeleteAsync(id, autoSave, cancellationToken);
}
public override IQueryable<Client> WithDetails()
{
return GetQueryable().IncludeDetails();

Loading…
Cancel
Save