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