|
|
@ -1,10 +1,11 @@ |
|
|
using System; |
|
|
using System.Linq; |
|
|
using System.Threading.Tasks; |
|
|
using System.Threading.Tasks; |
|
|
using Microsoft.Extensions.Logging; |
|
|
using Microsoft.Extensions.Logging; |
|
|
using Microsoft.Extensions.Logging.Abstractions; |
|
|
using Microsoft.Extensions.Logging.Abstractions; |
|
|
using Microsoft.Extensions.Options; |
|
|
using Microsoft.Extensions.Options; |
|
|
|
|
|
using Microsoft.IdentityModel.Tokens; |
|
|
using OpenIddict.Server; |
|
|
using OpenIddict.Server; |
|
|
using Volo.Abp.Text.Formatting; |
|
|
using Volo.Abp.Http; |
|
|
|
|
|
|
|
|
namespace Volo.Abp.OpenIddict.WildcardDomains; |
|
|
namespace Volo.Abp.OpenIddict.WildcardDomains; |
|
|
|
|
|
|
|
|
@ -29,30 +30,24 @@ public abstract class AbpOpenIddictWildcardDomainBase<THandler, TOriginalHandler |
|
|
|
|
|
|
|
|
protected virtual Task<bool> CheckWildcardDomainAsync(string url) |
|
|
protected virtual Task<bool> CheckWildcardDomainAsync(string url) |
|
|
{ |
|
|
{ |
|
|
Logger.LogDebug("Checking wildcard domain for url: {url}", url); |
|
|
if (WildcardDomainOptions.WildcardDomainsFormat.IsNullOrEmpty()) |
|
|
|
|
|
|
|
|
foreach (var domainFormat in WildcardDomainOptions.WildcardDomainsFormat) |
|
|
|
|
|
{ |
|
|
{ |
|
|
Logger.LogDebug("Checking wildcard domain format: {domainFormat}", domainFormat); |
|
|
Logger.LogDebug("No wildcard domain format configured."); |
|
|
var extractResult = FormattedStringValueExtracter.Extract(url, domainFormat, ignoreCase: true); |
|
|
return Task.FromResult(false); |
|
|
if (extractResult.IsMatch) |
|
|
|
|
|
{ |
|
|
|
|
|
Logger.LogDebug("Wildcard domain found for url: {url}", url); |
|
|
|
|
|
return Task.FromResult(true); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
foreach (var domainFormat in WildcardDomainOptions.WildcardDomainsFormat) |
|
|
Logger.LogDebug("Checking wildcard domain for url: {url}", url); |
|
|
|
|
|
foreach (var domain in WildcardDomainOptions.WildcardDomainsFormat.Select(domainFormat => domainFormat.Replace("{0}", "*"))) |
|
|
{ |
|
|
{ |
|
|
Logger.LogDebug("Checking wildcard domain format: {domainFormat}", domainFormat); |
|
|
Logger.LogDebug("Checking wildcard domain format: {newDomainFormat}", domain); |
|
|
if (domainFormat.Replace("{0}.", "").Equals(url, StringComparison.OrdinalIgnoreCase)) |
|
|
if (UrlHelpers.IsSubdomainOf(url, domain)) |
|
|
{ |
|
|
{ |
|
|
Logger.LogDebug("Wildcard domain found for url: {url}", url); |
|
|
Logger.LogDebug("The url: {url} is a wildcard domain of: {domain}", url, domain); |
|
|
return Task.FromResult(true); |
|
|
return Task.FromResult(true); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Logger.LogDebug("Wildcard domain not found for url: {url}", url); |
|
|
Logger.LogDebug("No wildcard domain found for url: {url}", url); |
|
|
return Task.FromResult(false); |
|
|
return Task.FromResult(false); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|