|
|
@ -82,13 +82,20 @@ public class EfCoreOpenIddictAuthorizationRepository : EfCoreRepository<IOpenIdd |
|
|
|
|
|
|
|
|
public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) |
|
|
public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) |
|
|
{ |
|
|
{ |
|
|
await (from authorization in (await GetQueryableAsync()) |
|
|
var authorizations = await (from authorization in (await GetQueryableAsync()) |
|
|
join token in (await GetDbContextAsync()).Set<OpenIddictToken>() |
|
|
join token in (await GetDbContextAsync()).Set<OpenIddictToken>() |
|
|
on authorization.Id equals token.AuthorizationId into authorizationTokens |
|
|
on authorization.Id equals token.AuthorizationId into authorizationTokens |
|
|
from authorizationToken in authorizationTokens.DefaultIfEmpty() |
|
|
from authorizationToken in authorizationTokens.DefaultIfEmpty() |
|
|
where authorization.CreationDate < date |
|
|
where authorization.CreationDate < date |
|
|
where authorization.Status != OpenIddictConstants.Statuses.Valid || |
|
|
where authorization.Status != OpenIddictConstants.Statuses.Valid || |
|
|
(authorization.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && authorizationToken == null) |
|
|
(authorization.Type == OpenIddictConstants.AuthorizationTypes.AdHoc && authorizationToken == null) |
|
|
select authorization).ExecuteDeleteAsync(cancellationToken); |
|
|
select authorization.Id).ToListAsync(cancellationToken); |
|
|
|
|
|
|
|
|
|
|
|
await (from token in (await GetDbContextAsync()).Set<OpenIddictToken>() |
|
|
|
|
|
where token.AuthorizationId != null && authorizations.Contains(token.AuthorizationId.Value) |
|
|
|
|
|
select token) |
|
|
|
|
|
.ExecuteDeleteAsync(GetCancellationToken(cancellationToken)); |
|
|
|
|
|
|
|
|
|
|
|
await (await GetDbSetAsync()).Where(x => authorizations.Contains(x.Id)).ExecuteDeleteAsync(cancellationToken); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|