public ActionResult Edit(int id)
        {
            var redirect = _redirectService.GetRedirect(id);

            if (redirect == null)
            {
                return(HttpNotFound());
            }

            return(View(redirect));
        }
Пример #2
0
        public IActionResult GetRedirect(string path)
        {
            var redirect = _redirectService.GetRedirect(path);

            if (redirect is null)
            {
                return(NotFound());
            }

            return(View("Redir"));
        }
Пример #3
0
        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);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
 /// <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));
 }