Browse Source

Refactor FrontChannelLogoutUri property to use Uri.

pull/23196/head
maliming 7 months ago
parent
commit
dd9590f5f2
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 5
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpApplicationDescriptor.cs
  2. 22
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpApplicationManager.cs
  3. 2
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/IAbpApplicationManager.cs
  4. 4
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplication.cs

5
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpApplicationDescriptor.cs

@ -1,4 +1,5 @@
using OpenIddict.Abstractions;
using System;
using OpenIddict.Abstractions;
namespace Volo.Abp.OpenIddict.Applications;
@ -7,7 +8,7 @@ public class AbpApplicationDescriptor : OpenIddictApplicationDescriptor
/// <summary>
/// Gets or sets the front-channel logout URI associated with the application.
/// </summary>
public virtual string FrontChannelLogoutUri { get; set; }
public virtual Uri FrontChannelLogoutUri { get; set; }
/// <summary>
/// URI to further information about client.

22
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/AbpApplicationManager.cs

@ -44,7 +44,17 @@ public class AbpApplicationManager : OpenIddictApplicationManager<OpenIddictAppl
if (descriptor is AbpApplicationDescriptor model)
{
model.FrontChannelLogoutUri = application.FrontChannelLogoutUri;
if (!application.FrontChannelLogoutUri.IsNullOrWhiteSpace())
{
if (!Uri.TryCreate(application.FrontChannelLogoutUri, UriKind.Absolute, out var uri) || IsImplicitFileUri(uri))
{
throw new ArgumentException(OpenIddictResources.GetResourceString("ID0214"));
}
model.FrontChannelLogoutUri = uri;
}
model.ClientUri = application.ClientUri;
model.LogoUri = application.LogoUri;
}
@ -56,7 +66,7 @@ public class AbpApplicationManager : OpenIddictApplicationManager<OpenIddictAppl
if (descriptor is AbpApplicationDescriptor model)
{
application.FrontChannelLogoutUri = model.FrontChannelLogoutUri;
application.FrontChannelLogoutUri = model.FrontChannelLogoutUri?.OriginalString;
application.ClientUri = model.ClientUri;
application.LogoUri = model.LogoUri;
}
@ -70,7 +80,6 @@ public class AbpApplicationManager : OpenIddictApplicationManager<OpenIddictAppl
return await Store.As<IAbpOpenIdApplicationStore>().GetFrontChannelLogoutUriAsync(application.As<OpenIddictApplicationModel>(), cancellationToken);
}
public virtual async ValueTask<string> GetClientUriAsync(object application, CancellationToken cancellationToken = default)
{
Check.NotNull(application, nameof(application));
@ -86,4 +95,11 @@ public class AbpApplicationManager : OpenIddictApplicationManager<OpenIddictAppl
return await Store.As<IAbpOpenIdApplicationStore>().GetLogoUriAsync(application.As<OpenIddictApplicationModel>(), cancellationToken);
}
protected virtual bool IsImplicitFileUri(Uri uri)
{
Check.NotNull(uri, nameof(uri));
return uri.IsAbsoluteUri && uri.IsFile && !uri.OriginalString.StartsWith(uri.Scheme, StringComparison.OrdinalIgnoreCase);
}
}

2
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/IAbpApplicationManager.cs

@ -6,6 +6,8 @@ namespace Volo.Abp.OpenIddict.Applications;
public interface IAbpApplicationManager : IOpenIddictApplicationManager
{
ValueTask<string> GetFrontChannelLogoutUriAsync(object application, CancellationToken cancellationToken = default);
ValueTask<string> GetClientUriAsync(object application, CancellationToken cancellationToken = default);
ValueTask<string> GetLogoUriAsync(object application, CancellationToken cancellationToken = default);

4
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplication.cs

@ -102,10 +102,10 @@ public class OpenIddictApplication : FullAuditedAggregateRoot<Guid>
/// <summary>
/// URI to further information about client.
/// </summary>
public string ClientUri { get; set; }
public virtual string ClientUri { get; set; }
/// <summary>
/// URI to client logo.
/// </summary>
public string LogoUri { get; set; }
public virtual string LogoUri { get; set; }
}

Loading…
Cancel
Save