implement non-default alias redirect
This commit is contained in:
parent
7e817a5808
commit
fdfbf54808
@ -12,15 +12,17 @@
|
||||
@using Oqtane.Themes
|
||||
@using System.Net
|
||||
@using Microsoft.AspNetCore.Localization
|
||||
@inject NavigationManager NavigationManager
|
||||
@inject IAntiforgery Antiforgery;
|
||||
@inject IConfigManager ConfigManager;
|
||||
@inject ITenantManager TenantManager;
|
||||
@inject ILocalizationManager LocalizationManager;
|
||||
@inject ISiteRepository SiteRepository;
|
||||
@inject IPageRepository PageRepository;
|
||||
@inject IThemeRepository ThemeRepository;
|
||||
@inject ILanguageRepository LanguageRepository;
|
||||
@inject IServerStateManager ServerStateManager;
|
||||
@inject ILocalizationManager LocalizationManager;
|
||||
@inject IAliasRepository AliasRepository;
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="@_language">
|
||||
@ -95,22 +97,7 @@
|
||||
{
|
||||
var url = WebUtility.UrlDecode(Context.Request.GetEncodedUrl());
|
||||
|
||||
// redirect non-default alias unless you are trying to access site settings
|
||||
// if (!alias.IsDefault && !url.Contains("admin/site"))
|
||||
// {
|
||||
// var aliases = AliasRepository.GetAliases().Where(item => item.TenantId == alias.TenantId && item.SiteId == alias.SiteId);
|
||||
// if (aliases.Where(item => item.IsDefault).FirstOrDefault() != null)
|
||||
// {
|
||||
// return RedirectPermanent(url.Replace(alias.Name, aliases.Where(item => item.IsDefault).FirstOrDefault().Name));
|
||||
// }
|
||||
// else // no default specified - use first alias
|
||||
// {
|
||||
// if (alias.Name.Trim() != aliases.First().Name.Trim())
|
||||
// {
|
||||
// return RedirectPermanent(url.Replace(alias.Name, aliases.First().Name));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
HandleDefaultAliasRedirect(alias, url);
|
||||
|
||||
var site = SiteRepository.GetSite(alias.SiteId);
|
||||
if (site != null && (!site.IsDeleted || url.Contains("admin/site")) && site.Runtime != "Hybrid")
|
||||
@ -243,6 +230,32 @@
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleDefaultAliasRedirect(Alias alias, string url)
|
||||
{
|
||||
// redirect non-default alias
|
||||
if (!alias.IsDefault)
|
||||
{
|
||||
// get aliases for site and tenant
|
||||
var aliases = AliasRepository.GetAliases().Where(item => item.TenantId == alias.TenantId && item.SiteId == alias.SiteId);
|
||||
// get first default alias
|
||||
var defaultAlias = aliases.Where(item => item.IsDefault).FirstOrDefault();
|
||||
if (defaultAlias != null)
|
||||
{
|
||||
// redirect to default alias
|
||||
NavigationManager.NavigateTo(url.Replace(alias.Name, defaultAlias.Name), true);
|
||||
}
|
||||
else // no default alias specified - use first alias
|
||||
{
|
||||
defaultAlias = aliases.FirstOrDefault();
|
||||
if (defaultAlias != null && alias.Name.Trim() != defaultAlias.Name.Trim())
|
||||
{
|
||||
// redirect to first alias
|
||||
NavigationManager.NavigateTo(url.Replace(alias.Name, defaultAlias.Name), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string CreatePWAScript(Alias alias, Site site, Route route)
|
||||
{
|
||||
return
|
||||
|
Reference in New Issue
Block a user