Add `ClientUri ` and `LogoUri ` to `OpenIddictApplication`.

pull/13036/head
maliming 3 years ago
parent 8b8364b8a3
commit 7a830637ec
No known key found for this signature in database
GPG Key ID: 096224957E51C89E

@ -1,6 +1,8 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using OpenIddict.Abstractions;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Caching;
using Volo.Abp.DistributedLocking;
@ -68,6 +70,10 @@ public class AbpOpenIddictDomainModule : AbpModule
.AddScopeStore<AbpOpenIddictScopeStore>()
.AddTokenStore<AbpOpenIddictTokenStore>();
builder.ReplaceApplicationManager(typeof(AbpApplicationManager));
builder.Services.TryAddScoped(provider => (IAbpApplicationManager)provider.GetRequiredService<IOpenIddictApplicationManager>());
services.ExecutePreConfiguredActions(builder);
});

@ -0,0 +1,16 @@
using OpenIddict.Abstractions;
namespace Volo.Abp.OpenIddict.Applications;
public class AbpApplicationDescriptor : OpenIddictApplicationDescriptor
{
/// <summary>
/// URI to further information about client.
/// </summary>
public string ClientUri { get; set; }
/// <summary>
/// URI to client logo.
/// </summary>
public string LogoUri { get; set; }
}

@ -0,0 +1,61 @@
using System;
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.Applications;
public class AbpApplicationManager : OpenIddictApplicationManager<OpenIddictApplicationModel>, IAbpApplicationManager
{
public AbpApplicationManager(
[NotNull] IOpenIddictApplicationCache<OpenIddictApplicationModel> cache,
[NotNull] ILogger<AbpApplicationManager> logger,
[NotNull] IOptionsMonitor<OpenIddictCoreOptions> options,
[NotNull] IOpenIddictApplicationStoreResolver resolver)
: base(cache, logger, options, resolver)
{
}
public async override ValueTask PopulateAsync(OpenIddictApplicationDescriptor descriptor, OpenIddictApplicationModel application, CancellationToken cancellationToken = default)
{
await base.PopulateAsync(descriptor, application, cancellationToken);
if (descriptor is AbpApplicationDescriptor model)
{
application.ClientUri = model.ClientUri;
application.LogoUri = model.LogoUri;
}
}
public async override ValueTask PopulateAsync(OpenIddictApplicationModel application, OpenIddictApplicationDescriptor descriptor, CancellationToken cancellationToken = default)
{
await base.PopulateAsync(application, descriptor, cancellationToken);
if (descriptor is AbpApplicationDescriptor model)
{
application.ClientUri = model.ClientUri;
application.LogoUri = model.LogoUri;
}
}
public virtual async ValueTask<string> GetClientUriAsync(object application, CancellationToken cancellationToken = default)
{
Check.NotNull(application, nameof(application));
Check.AssignableTo<IAbpOpenIdApplicationStore>(application.GetType(), nameof(application));
return await Store.As<IAbpOpenIdApplicationStore>().GetClientUriAsync(application.As<OpenIddictApplicationModel>(), cancellationToken);
}
public virtual async ValueTask<string> GetLogoUriAsync(object application, CancellationToken cancellationToken = default)
{
Check.NotNull(application, nameof(application));
Check.AssignableTo<IAbpOpenIdApplicationStore>(application.GetType(), nameof(application));
return await Store.As<IAbpOpenIdApplicationStore>().GetLogoUriAsync(application.As<OpenIddictApplicationModel>(), cancellationToken);
}
}

@ -8,14 +8,13 @@ using System.Runtime.CompilerServices;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using OpenIddict.Abstractions;
using Volo.Abp.Guids;
using Volo.Abp.OpenIddict.Tokens;
using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Applications;
public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase<IOpenIddictApplicationRepository>, IOpenIddictApplicationStore<OpenIddictApplicationModel>
public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase<IOpenIddictApplicationRepository>, IAbpOpenIdApplicationStore
{
protected IOpenIddictTokenRepository TokenRepository { get; }
@ -44,7 +43,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase<IOpenIddictA
Check.NotNull(application, nameof(application));
await Repository.InsertAsync(application.ToEntity(), autoSave: true, cancellationToken: cancellationToken);
application = (await Repository.FindAsync(application.Id, cancellationToken: cancellationToken)).ToModel();
}
@ -531,4 +530,18 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase<IOpenIddictA
application = (await Repository.FindAsync(entity.Id, cancellationToken: cancellationToken)).ToModel();
}
public virtual ValueTask<string> GetClientUriAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken = default)
{
Check.NotNull(application, nameof(application));
return new ValueTask<string>(application.ClientUri);
}
public virtual ValueTask<string> GetLogoUriAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken = default)
{
Check.NotNull(application, nameof(application));
return new ValueTask<string>(application.LogoUri);
}
}

@ -0,0 +1,12 @@
using System.Threading;
using System.Threading.Tasks;
using OpenIddict.Abstractions;
namespace Volo.Abp.OpenIddict.Applications;
public interface IAbpApplicationManager : IOpenIddictApplicationManager
{
ValueTask<string> GetClientUriAsync(object application, CancellationToken cancellationToken = default);
ValueTask<string> GetLogoUriAsync(object application, CancellationToken cancellationToken = default);
}

@ -0,0 +1,12 @@
using System.Threading;
using System.Threading.Tasks;
using OpenIddict.Abstractions;
namespace Volo.Abp.OpenIddict.Applications;
public interface IAbpOpenIdApplicationStore : IOpenIddictApplicationStore<OpenIddictApplicationModel>
{
ValueTask<string> GetClientUriAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken = default);
ValueTask<string> GetLogoUriAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken = default);
}

@ -77,4 +77,14 @@ public class OpenIddictApplication : FullAuditedAggregateRoot<Guid>
/// Gets or sets the application type associated with the current application.
/// </summary>
public virtual string Type { get; set; }
/// <summary>
/// URI to further information about client.
/// </summary>
public string ClientUri { get; set; }
/// <summary>
/// URI to client logo.
/// </summary>
public string LogoUri { get; set; }
}

@ -18,7 +18,9 @@ public static class OpenIddictApplicationExtensions
Properties = model.Properties,
RedirectUris = model.RedirectUris,
Requirements = model.Requirements,
Type = model.Type
Type = model.Type,
ClientUri = model.ClientUri,
LogoUri = model.LogoUri
};
foreach (var extraProperty in model.ExtraProperties)
@ -45,6 +47,8 @@ public static class OpenIddictApplicationExtensions
entity.RedirectUris = model.RedirectUris;
entity.Requirements = model.Requirements;
entity.Type = model.Type;
entity.ClientUri = model.ClientUri;
entity.LogoUri = model.LogoUri;
foreach (var extraProperty in model.ExtraProperties)
{
@ -75,7 +79,9 @@ public static class OpenIddictApplicationExtensions
Properties = entity.Properties,
RedirectUris = entity.RedirectUris,
Requirements = entity.Requirements,
Type = entity.Type
Type = entity.Type,
ClientUri = entity.ClientUri,
LogoUri = entity.LogoUri
};
foreach (var extraProperty in entity.ExtraProperties)

@ -72,4 +72,14 @@ public class OpenIddictApplicationModel : ExtensibleObject
/// Gets or sets the application type associated with the current application.
/// </summary>
public virtual string Type { get; set; }
/// <summary>
/// URI to further information about client.
/// </summary>
public string ClientUri { get; set; }
/// <summary>
/// URI to client logo.
/// </summary>
public string LogoUri { get; set; }
}

Loading…
Cancel
Save