public ActionResult Edit(int id) { var redirect = _redirectService.GetRedirect(id); if (redirect == null) { return(HttpNotFound()); } return(View(redirect)); }
public IActionResult GetRedirect(string path) { var redirect = _redirectService.GetRedirect(path); if (redirect is null) { return(NotFound()); } return(View("Redir")); }
public IActionResult Edit(long id) { var redirect = redirectService.GetRedirect(id); RedirectViewModel redirectVM = new RedirectViewModel(); redirectVM.Id = redirect.Id; redirectVM.Name = redirect.Name; redirectVM.OldUrl = redirect.OldUrl; redirectVM.NewUrl = redirect.NewUrl; redirectVM.IsActive = redirect.IsActive; redirectVM.ModifiedDate = redirect.ModifiedDate; redirectVM.ModifiedBy = redirect.ModifiedBy; redirectVM.AddedBy = redirect.AddedBy; return(View(redirectVM)); }
public void CannotEditRedirectRuleToHaveSameSourceUrl() { PopulateTable(2); var rule = _redirectService.GetRedirects().First(); rule.SourceUrl = "sourceUrl1"; Assert.Throws <RedirectRuleDuplicateException>(() => _redirectService.Update(rule)); Assert.That(_redirectService.GetRedirects().Count(rr => rr.SourceUrl == "sourceUrl1"), Is.EqualTo(1)); rule = _redirectService.GetRedirect(1); rule.SourceUrl = "sourceUrl1"; Assert.Throws <RedirectRuleDuplicateException>(() => _redirectService.Update(rule)); Assert.That(_redirectService.GetRedirects().Count(rr => rr.SourceUrl == "sourceUrl1"), Is.EqualTo(1)); }
public void OnActionExecuting(ActionExecutingContext filterContext) { var url = filterContext.RequestContext.HttpContext.Request.Url; if (url == null) { return; } if (AdminFilter.IsApplied(new RequestContext(filterContext.HttpContext, new RouteData()))) { return; //no automated redirects from admin } if (filterContext.HttpContext.Request.HttpMethod.Equals("POST", StringComparison.OrdinalIgnoreCase)) { return; //do not redirect POST requests } var urlPrefix = _shellSettings.RequestUrlPrefix; var applicationPath = filterContext.HttpContext.Request.ApplicationPath; var strippedSegments = url.Segments.Select(s => s.Trim('/')).ToList(); //to generate the path we want to use, remove from the segments the ApplicationPath and UrlPrefix //remove only the first of each, because there may be segments with the same "value" //e.g. in https://localhost/Laser.Orchard/LaserTest/LaserTest: // ApplicationPath == "/Laser.Orchard" // UrlPrefix == "LaserTest" // the second LaserTest is the alias of an actual page. strippedSegments .Remove(strippedSegments .FirstOrDefault(s => s.Equals(applicationPath.Trim('/'), StringComparison.InvariantCultureIgnoreCase))); if (!string.IsNullOrWhiteSpace(urlPrefix)) { strippedSegments .Remove(strippedSegments .FirstOrDefault(s => s.Equals(urlPrefix.Trim('/'), StringComparison.InvariantCultureIgnoreCase))); } var path = string.Join("/", strippedSegments); var redirect = _redirectService.GetRedirect(path); if (redirect == null) { return; } var destination = _wca.GetContext().CurrentSite.BaseUrl + //not a fan of this, since BaseUrl can be edited by admin (string.IsNullOrWhiteSpace(urlPrefix) ? "" : "/" + urlPrefix) + "/" + redirect.DestinationUrl.TrimStart('/'); filterContext.Result = new RedirectResult(destination + url.Query, redirect.IsPermanent); }
/// <summary> /// Finds the redirect. /// </summary> /// <param name="source">The source url.</param> /// <returns> /// Destination url /// </returns> public string FindRedirect(string source) { string redirectDestinationUrl = null; var useCache = cmsConfiguration.Cache.Enabled; if (urlService.ValidateInternalUrl(source)) { source = urlService.FixUrl(source); } if (useCache) { var redirects = cacheService.Get(cacheKey, cmsConfiguration.Cache.Timeout, () => redirectService.GetAllRedirects()); redirectDestinationUrl = redirects.Where(x => x.PageUrl.Equals(source, StringComparison.InvariantCultureIgnoreCase)).Select(x => x.RedirectUrl).FirstOrDefault(); } else { return(redirectService.GetRedirect(source)); } return(redirectDestinationUrl); }
/// <summary> /// Gets the redirect for given url. /// </summary> /// <param name="virtualPath">The virtual path.</param> /// <returns> /// Redirect URL /// </returns> /// <exception cref="System.NotImplementedException"></exception> public string GetRedirect(string virtualPath) { return(redirectService.GetRedirect(virtualPath)); }