make Url Mappings relative rather than absolute
This commit is contained in:
parent
224618cf21
commit
eeff4af167
|
@ -40,13 +40,22 @@
|
||||||
var interop = new Interop(JSRuntime);
|
var interop = new Interop(JSRuntime);
|
||||||
if (await interop.FormValid(form))
|
if (await interop.FormValid(form))
|
||||||
{
|
{
|
||||||
var route = new Route(_url, PageState.Alias.Path);
|
if (_url != _mappedurl)
|
||||||
var url = route.SiteUrl + "/" + route.PagePath;
|
{
|
||||||
|
Uri uri = new Uri(NavigationManager.Uri);
|
||||||
|
var url = uri.Scheme + "://" + uri.Authority + "/";
|
||||||
|
url = url + (!string.IsNullOrEmpty(PageState.Alias.Path) ? PageState.Alias.Path + "/" : "");
|
||||||
|
|
||||||
|
_url = (_url.StartsWith("/")) ? _url.Substring(1) : _url;
|
||||||
|
_url = (!_url.StartsWith("http")) ? url + _url : _url;
|
||||||
|
|
||||||
|
if (_url.StartsWith(url))
|
||||||
|
{
|
||||||
var urlmapping = new UrlMapping();
|
var urlmapping = new UrlMapping();
|
||||||
urlmapping.SiteId = PageState.Site.SiteId;
|
urlmapping.SiteId = PageState.Site.SiteId;
|
||||||
urlmapping.Url = url;
|
var route = new Route(_url, PageState.Alias.Path);
|
||||||
urlmapping.MappedUrl = _mappedurl;
|
urlmapping.Url = route.PagePath;
|
||||||
|
urlmapping.MappedUrl = _mappedurl.Replace(url, "");
|
||||||
urlmapping.Requests = 0;
|
urlmapping.Requests = 0;
|
||||||
urlmapping.CreatedOn = DateTime.UtcNow;
|
urlmapping.CreatedOn = DateTime.UtcNow;
|
||||||
urlmapping.RequestedOn = DateTime.UtcNow;
|
urlmapping.RequestedOn = DateTime.UtcNow;
|
||||||
|
@ -64,6 +73,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
AddModuleMessage(Localizer["Message.SaveUrlMapping"], MessageType.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddModuleMessage(Localizer["Message.DuplicateUrlMapping"], MessageType.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
|
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,23 +60,33 @@
|
||||||
var interop = new Interop(JSRuntime);
|
var interop = new Interop(JSRuntime);
|
||||||
if (await interop.FormValid(form))
|
if (await interop.FormValid(form))
|
||||||
{
|
{
|
||||||
var urlmapping = await UrlMappingService.GetUrlMappingAsync(_urlmappingid);
|
if (_url != _mappedurl)
|
||||||
urlmapping.MappedUrl = _mappedurl;
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Uri uri = new Uri(NavigationManager.Uri);
|
||||||
|
var url = uri.Scheme + "://" + uri.Authority + "/";
|
||||||
|
url = url + (!string.IsNullOrEmpty(PageState.Alias.Path) ? PageState.Alias.Path + "/" : "");
|
||||||
|
|
||||||
|
var urlmapping = await UrlMappingService.GetUrlMappingAsync(_urlmappingid);
|
||||||
|
urlmapping.MappedUrl = _mappedurl.Replace(url, "");
|
||||||
urlmapping = await UrlMappingService.UpdateUrlMappingAsync(urlmapping);
|
urlmapping = await UrlMappingService.UpdateUrlMappingAsync(urlmapping);
|
||||||
await logger.LogInformation("UrlMapping Saved {UrlMapping}", urlmapping);
|
await logger.LogInformation("UrlMapping Saved {UrlMapping}", urlmapping);
|
||||||
NavigationManager.NavigateTo(NavigateUrl());
|
NavigationManager.NavigateTo(NavigateUrl());
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
await logger.LogError(ex, "Error Saving UrlMapping {UrlMapping} {Error}", urlmapping, ex.Message);
|
await logger.LogError(ex, "Error Saving UrlMapping {UrlMappingId} {Error}", _urlmappingid, ex.Message);
|
||||||
AddModuleMessage(Localizer["Error.SaveUrlMapping"], MessageType.Error);
|
AddModuleMessage(Localizer["Error.SaveUrlMapping"], MessageType.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
AddModuleMessage(Localizer["Message.DuplicateUrlMapping"], MessageType.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
|
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,10 +40,10 @@ else
|
||||||
<td><ActionLink Action="Edit" Parameters="@($"id=" + context.UrlMappingId.ToString())" ResourceKey="Edit" /></td>
|
<td><ActionLink Action="Edit" Parameters="@($"id=" + context.UrlMappingId.ToString())" ResourceKey="Edit" /></td>
|
||||||
<td><ActionDialog Header="Delete Url Mapping" Message="@string.Format(Localizer["Confirm.DeleteUrlMapping"], context.Url)" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteUrlMapping(context))" ResourceKey="DeleteUrlMapping" /></td>
|
<td><ActionDialog Header="Delete Url Mapping" Message="@string.Format(Localizer["Confirm.DeleteUrlMapping"], context.Url)" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteUrlMapping(context))" ResourceKey="DeleteUrlMapping" /></td>
|
||||||
<td>
|
<td>
|
||||||
<a href="@context.Url">@context.Url</a>
|
<a href="@Utilities.TenantUrl(PageState.Alias, context.Url)">@context.Url</a>
|
||||||
@if (_mapped)
|
@if (_mapped)
|
||||||
{
|
{
|
||||||
@((MarkupString)"<br />>> ")<a href="@context.MappedUrl">@context.MappedUrl</a>
|
@((MarkupString)"<br />>> ")<a href="@((context.MappedUrl.StartsWith("http") ? context.MappedUrl : Utilities.TenantUrl(PageState.Alias, context.MappedUrl)))">@context.MappedUrl</a>
|
||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
<td>@context.Requests</td>
|
<td>@context.Requests</td>
|
||||||
|
|
|
@ -121,10 +121,10 @@
|
||||||
<value>Redirect To:</value>
|
<value>Redirect To:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MappedUrl.HelpText" xml:space="preserve">
|
<data name="MappedUrl.HelpText" xml:space="preserve">
|
||||||
<value>A fully qualified Url where the user will be redirected</value>
|
<value>A relative or absolute Url where the user will be redirected</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Url.HelpText" xml:space="preserve">
|
<data name="Url.HelpText" xml:space="preserve">
|
||||||
<value>A fully qualified Url for this site</value>
|
<value>An absolute Url identifying a path to a specific page in the site</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Url.Text" xml:space="preserve">
|
<data name="Url.Text" xml:space="preserve">
|
||||||
<value>Url:</value>
|
<value>Url:</value>
|
||||||
|
@ -135,4 +135,10 @@
|
||||||
<data name="Message.InfoRequired" xml:space="preserve">
|
<data name="Message.InfoRequired" xml:space="preserve">
|
||||||
<value>Please Provide All Required Information</value>
|
<value>Please Provide All Required Information</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Message.DuplicateUrlMapping" xml:space="preserve">
|
||||||
|
<value>The Url and Redirect To cannot be the same</value>
|
||||||
|
</data>
|
||||||
|
<data name="Message.SaveUrlMapping" xml:space="preserve">
|
||||||
|
<value>The Url must belong to the current site</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -121,10 +121,10 @@
|
||||||
<value>Redirect To:</value>
|
<value>Redirect To:</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MappedUrl.HelpText" xml:space="preserve">
|
<data name="MappedUrl.HelpText" xml:space="preserve">
|
||||||
<value>A fully qualified Url where the user will be redirected</value>
|
<value>A relative or absolute Url where the user will be redirected</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Url.HelpText" xml:space="preserve">
|
<data name="Url.HelpText" xml:space="preserve">
|
||||||
<value>A fully qualified Url for this site</value>
|
<value>A relative Url identifying a path to a specific page in the site</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Url.Text" xml:space="preserve">
|
<data name="Url.Text" xml:space="preserve">
|
||||||
<value>Url:</value>
|
<value>Url:</value>
|
||||||
|
@ -138,4 +138,7 @@
|
||||||
<data name="Message.InfoRequired" xml:space="preserve">
|
<data name="Message.InfoRequired" xml:space="preserve">
|
||||||
<value>Please Provide All Required Information</value>
|
<value>Please Provide All Required Information</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Message.DuplicateUrlMapping" xml:space="preserve">
|
||||||
|
<value>The Url and Redirect To cannot be the same</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -234,10 +234,12 @@
|
||||||
}
|
}
|
||||||
else // page not found
|
else // page not found
|
||||||
{
|
{
|
||||||
var urlMapping = await UrlMappingService.GetUrlMappingAsync(site.SiteId, route.SiteUrl + "/" + route.PagePath);
|
// look for url mapping
|
||||||
|
var urlMapping = await UrlMappingService.GetUrlMappingAsync(site.SiteId, route.PagePath);
|
||||||
if (urlMapping != null && !string.IsNullOrEmpty(urlMapping.MappedUrl))
|
if (urlMapping != null && !string.IsNullOrEmpty(urlMapping.MappedUrl))
|
||||||
{
|
{
|
||||||
NavigationManager.NavigateTo(urlMapping.MappedUrl, false);
|
var url = (urlMapping.MappedUrl.StartsWith("http")) ? urlMapping.MappedUrl : route.SiteUrl + "/" + urlMapping.MappedUrl;
|
||||||
|
NavigationManager.NavigateTo(url, false);
|
||||||
}
|
}
|
||||||
else // not mapped
|
else // not mapped
|
||||||
{
|
{
|
||||||
|
|
|
@ -261,11 +261,10 @@ namespace Oqtane.Controllers
|
||||||
// save url mapping if page path changed
|
// save url mapping if page path changed
|
||||||
if (currentPage.Path != page.Path)
|
if (currentPage.Path != page.Path)
|
||||||
{
|
{
|
||||||
var url = HttpContext.Request.Scheme + "://" + _alias.Name + "/";
|
|
||||||
var urlMapping = new UrlMapping();
|
var urlMapping = new UrlMapping();
|
||||||
urlMapping.SiteId = page.SiteId;
|
urlMapping.SiteId = page.SiteId;
|
||||||
urlMapping.Url = url + currentPage.Path;
|
urlMapping.Url = currentPage.Path;
|
||||||
urlMapping.MappedUrl = url + page.Path;
|
urlMapping.MappedUrl = page.Path;
|
||||||
urlMapping.Requests = 0;
|
urlMapping.Requests = 0;
|
||||||
urlMapping.CreatedOn = System.DateTime.UtcNow;
|
urlMapping.CreatedOn = System.DateTime.UtcNow;
|
||||||
urlMapping.RequestedOn = System.DateTime.UtcNow;
|
urlMapping.RequestedOn = System.DateTime.UtcNow;
|
||||||
|
|
|
@ -143,14 +143,14 @@ namespace Oqtane.Pages
|
||||||
ThemeType = page.ThemeType;
|
ThemeType = page.ThemeType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else // page not found
|
||||||
{
|
{
|
||||||
// page does not exist
|
// look for url mapping
|
||||||
url = route.SiteUrl + "/" + route.PagePath;
|
var urlMapping = _urlMappings.GetUrlMapping(site.SiteId, route.PagePath);
|
||||||
var urlMapping = _urlMappings.GetUrlMapping(site.SiteId, url);
|
|
||||||
if (urlMapping != null && !string.IsNullOrEmpty(urlMapping.MappedUrl))
|
if (urlMapping != null && !string.IsNullOrEmpty(urlMapping.MappedUrl))
|
||||||
{
|
{
|
||||||
return RedirectPermanent(urlMapping.MappedUrl);
|
url = (urlMapping.MappedUrl.StartsWith("http")) ? urlMapping.MappedUrl : route.SiteUrl + "/" + urlMapping.MappedUrl;
|
||||||
|
return RedirectPermanent(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,10 +190,9 @@ namespace Oqtane.Pages
|
||||||
string ip = HttpContext.Connection.RemoteIpAddress?.ToString() ?? "";
|
string ip = HttpContext.Connection.RemoteIpAddress?.ToString() ?? "";
|
||||||
string useragent = (Request.Headers[HeaderNames.UserAgent] != StringValues.Empty) ? Request.Headers[HeaderNames.UserAgent] : "";
|
string useragent = (Request.Headers[HeaderNames.UserAgent] != StringValues.Empty) ? Request.Headers[HeaderNames.UserAgent] : "";
|
||||||
string language = (Request.Headers[HeaderNames.AcceptLanguage] != StringValues.Empty) ? Request.Headers[HeaderNames.AcceptLanguage] : "";
|
string language = (Request.Headers[HeaderNames.AcceptLanguage] != StringValues.Empty) ? Request.Headers[HeaderNames.AcceptLanguage] : "";
|
||||||
if (language.Contains(","))
|
language = (language.Contains(",")) ? language.Substring(0, language.IndexOf(",")) : language;
|
||||||
{
|
language = (language.Contains(";")) ? language.Substring(0, language.IndexOf(";")) : language;
|
||||||
language = language.Substring(0, language.IndexOf(","));
|
language = (language.Trim().Length == 0) ? "*" : language;
|
||||||
}
|
|
||||||
string url = Request.GetEncodedUrl();
|
string url = Request.GetEncodedUrl();
|
||||||
string referrer = (Request.Headers[HeaderNames.Referer] != StringValues.Empty) ? Request.Headers[HeaderNames.Referer] : "";
|
string referrer = (Request.Headers[HeaderNames.Referer] != StringValues.Empty) ? Request.Headers[HeaderNames.Referer] : "";
|
||||||
int? userid = null;
|
int? userid = null;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user