fix #1156 add defensive coding for scenario where host name does not match any alias

This commit is contained in:
Shaun Walker 2021-03-11 20:21:15 -05:00
parent 6d3e17a5f5
commit 86ce8994d9
2 changed files with 24 additions and 10 deletions

View File

@ -1,4 +1,4 @@
@page "/"
@page "/"
@namespace Oqtane.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Configuration
@ -35,6 +35,11 @@
<a class="dismiss">🗙</a>
</div>
@if (Model.Message != "")
{
@Model.Message
}
<script src="js/interop.js"></script>
@if (Configuration.GetSection("Runtime").Value == "WebAssembly")

View File

@ -39,6 +39,7 @@ namespace Oqtane.Pages
public string HeadResources = "";
public string BodyResources = "";
public string Message = "";
public void OnGet()
{
@ -54,20 +55,28 @@ namespace Oqtane.Pages
if (HttpContext.Request.Cookies[CookieRequestCultureProvider.DefaultCookieName] == null && !string.IsNullOrEmpty(_configuration.GetConnectionString("DefaultConnection")))
{
var uri = new Uri(Request.GetDisplayUrl());
var alias = _aliases.GetAlias(uri.Authority + "/" + uri.LocalPath.Substring(1));
_state.Alias = alias;
// set default language for site if the culture is not supported
var languages = _languages.GetLanguages(alias.SiteId);
if (languages.Any() && languages.All(l => l.Code != CultureInfo.CurrentUICulture.Name))
var hostname = uri.Authority + "/" + uri.LocalPath.Substring(1);
var alias = _aliases.GetAlias(hostname);
if (alias != null)
{
var defaultLanguage = languages.Where(l => l.IsDefault).SingleOrDefault() ?? languages.First();
_state.Alias = alias;
SetLocalizationCookie(defaultLanguage.Code);
// set default language for site if the culture is not supported
var languages = _languages.GetLanguages(alias.SiteId);
if (languages.Any() && languages.All(l => l.Code != CultureInfo.CurrentUICulture.Name))
{
var defaultLanguage = languages.Where(l => l.IsDefault).SingleOrDefault() ?? languages.First();
SetLocalizationCookie(defaultLanguage.Code);
}
else
{
SetLocalizationCookie(_localizationManager.GetDefaultCulture());
}
}
else
{
SetLocalizationCookie(_localizationManager.GetDefaultCulture());
Message = $"No Matching Alias For Host Name {hostname}";
}
}
}