mirror of https://github.com/abpframework/abp.git
14 changed files with 195 additions and 35 deletions
@ -0,0 +1,17 @@ |
|||||
|
using System; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.OpenIddict; |
||||
|
|
||||
|
public class AbpOpenIddictIdentifierConverter : ITransientDependency |
||||
|
{ |
||||
|
public virtual Guid FromString(string identifier) |
||||
|
{ |
||||
|
return string.IsNullOrEmpty(identifier) ? default : Guid.Parse(identifier); |
||||
|
} |
||||
|
|
||||
|
public virtual string ToString(Guid identifier) |
||||
|
{ |
||||
|
return identifier.ToString("D"); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
using System.Threading; |
||||
|
using System.Threading.Tasks; |
||||
|
using JetBrains.Annotations; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using OpenIddict.Abstractions; |
||||
|
using OpenIddict.Core; |
||||
|
|
||||
|
namespace Volo.Abp.OpenIddict.Authorizations; |
||||
|
|
||||
|
public class AbpAuthorizationManager : OpenIddictAuthorizationManager<OpenIddictAuthorizationModel> |
||||
|
{ |
||||
|
protected AbpOpenIddictIdentifierConverter IdentifierConverter { get; } |
||||
|
|
||||
|
public AbpAuthorizationManager( |
||||
|
[NotNull] [ItemNotNull] IOpenIddictAuthorizationCache<OpenIddictAuthorizationModel> cache, |
||||
|
[NotNull] [ItemNotNull] ILogger<OpenIddictAuthorizationManager<OpenIddictAuthorizationModel>> logger, |
||||
|
[NotNull] [ItemNotNull] IOptionsMonitor<OpenIddictCoreOptions> options, |
||||
|
[NotNull] IOpenIddictAuthorizationStoreResolver resolver, |
||||
|
AbpOpenIddictIdentifierConverter identifierConverter) |
||||
|
: base(cache, logger, options, resolver) |
||||
|
{ |
||||
|
IdentifierConverter = identifierConverter; |
||||
|
} |
||||
|
|
||||
|
public async override ValueTask UpdateAsync(OpenIddictAuthorizationModel authorization, CancellationToken cancellationToken = default) |
||||
|
{ |
||||
|
if (!Options.CurrentValue.DisableEntityCaching) |
||||
|
{ |
||||
|
var entity = await Store.FindByIdAsync(IdentifierConverter.ToString(authorization.Id), cancellationToken); |
||||
|
if (entity != null) |
||||
|
{ |
||||
|
await Cache.RemoveAsync(entity, cancellationToken); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
await base.UpdateAsync(authorization, cancellationToken); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
using System.Threading; |
||||
|
using System.Threading.Tasks; |
||||
|
using JetBrains.Annotations; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using OpenIddict.Abstractions; |
||||
|
using OpenIddict.Core; |
||||
|
|
||||
|
namespace Volo.Abp.OpenIddict.Scopes; |
||||
|
|
||||
|
public class AbpScopeManager : OpenIddictScopeManager<OpenIddictScopeModel> |
||||
|
{ |
||||
|
protected AbpOpenIddictIdentifierConverter IdentifierConverter { get; } |
||||
|
|
||||
|
public AbpScopeManager( |
||||
|
[NotNull] [ItemNotNull] IOpenIddictScopeCache<OpenIddictScopeModel> cache, |
||||
|
[NotNull] [ItemNotNull] ILogger<OpenIddictScopeManager<OpenIddictScopeModel>> logger, |
||||
|
[NotNull] [ItemNotNull] IOptionsMonitor<OpenIddictCoreOptions> options, |
||||
|
[NotNull] IOpenIddictScopeStoreResolver resolver, |
||||
|
AbpOpenIddictIdentifierConverter identifierConverter) |
||||
|
: base(cache, logger, options, resolver) |
||||
|
{ |
||||
|
IdentifierConverter = identifierConverter; |
||||
|
} |
||||
|
|
||||
|
public async override ValueTask UpdateAsync(OpenIddictScopeModel scope, CancellationToken cancellationToken = default) |
||||
|
{ |
||||
|
if (!Options.CurrentValue.DisableEntityCaching) |
||||
|
{ |
||||
|
var entity = await Store.FindByIdAsync(IdentifierConverter.ToString(scope.Id), cancellationToken); |
||||
|
if (entity != null) |
||||
|
{ |
||||
|
await Cache.RemoveAsync(entity, cancellationToken); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
await base.UpdateAsync(scope, cancellationToken); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
using System.Threading; |
||||
|
using System.Threading.Tasks; |
||||
|
using JetBrains.Annotations; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using OpenIddict.Abstractions; |
||||
|
using OpenIddict.Core; |
||||
|
|
||||
|
namespace Volo.Abp.OpenIddict.Tokens; |
||||
|
|
||||
|
public class AbpTokenManager : OpenIddictTokenManager<OpenIddictTokenModel> |
||||
|
{ |
||||
|
protected AbpOpenIddictIdentifierConverter IdentifierConverter { get; } |
||||
|
|
||||
|
public AbpTokenManager( |
||||
|
[NotNull] [ItemNotNull] IOpenIddictTokenCache<OpenIddictTokenModel> cache, |
||||
|
[NotNull] [ItemNotNull] ILogger<OpenIddictTokenManager<OpenIddictTokenModel>> logger, |
||||
|
[NotNull] [ItemNotNull] IOptionsMonitor<OpenIddictCoreOptions> options, |
||||
|
[NotNull] IOpenIddictTokenStoreResolver resolver, |
||||
|
AbpOpenIddictIdentifierConverter identifierConverter) |
||||
|
: base(cache, logger, options, resolver) |
||||
|
{ |
||||
|
IdentifierConverter = identifierConverter; |
||||
|
} |
||||
|
|
||||
|
public async override ValueTask UpdateAsync(OpenIddictTokenModel token, CancellationToken cancellationToken = default) |
||||
|
{ |
||||
|
if (!Options.CurrentValue.DisableEntityCaching) |
||||
|
{ |
||||
|
var entity = await Store.FindByIdAsync(IdentifierConverter.ToString(token.Id), cancellationToken); |
||||
|
if (entity != null) |
||||
|
{ |
||||
|
await Cache.RemoveAsync(entity, cancellationToken); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
await base.UpdateAsync(token, cancellationToken); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue