/// <summary> /// Registers the MVC routes for the TokenManager web app /// </summary> /// <param name="route"></param> public static void RegisterRoutes(string route) { if (Factory.GetDatabase("master", false) == null) { return; } var routes = RouteTable.Routes; var handler = new TokenManagerHandler(route); using (routes.GetWriteLock()) { var defaultRoute = new Route(route + "/", handler) { // we have to specify these, so no MVC route helpers will match, e.g. @Html.ActionLink("Home", "Index", "Home") Defaults = new RouteValueDictionary(new { controller = "TokenManagerHandler", action = "ProcessRequest" }), Constraints = new RouteValueDictionary(new { controller = "TokenManagerHandler", action = "ProcessRequest" }) }; routes.Add("TokenManagerHandlerRoute", defaultRoute); var filenameRoute = new Route(route + "/{filename}", handler) { Defaults = new RouteValueDictionary(new { controller = "TokenManagerHandler", action = "ProcessRequest" }), Constraints = new RouteValueDictionary(new { controller = "TokenManagerHandler", action = "ProcessRequest" }) }; routes.Add("TokenManagerHandlerFilenameRoute", filenameRoute); } }
private static bool IsAllowed(Item tokenTarget, Item filterable) { Item Datasource = TokenManagerHandler.GetDatasourceItem(); if (Datasource == null) { Datasource = tokenTarget; } while (filterable.Fields["Item Ancestor"] != null && filterable.Fields["Item Template"] != null) { if ( !filterable["Item Ancestor"].Split('|') .Any(x => IsAllowedForItem(tokenTarget, filterable, filterable.Database.GetItem(x)))) { return(false); } if (!string.IsNullOrWhiteSpace(filterable["Item Template"]) && filterable["Item Template"].Split('|').All(x => x != tokenTarget.TemplateID.ToString())) { return(false); } filterable = filterable.Parent; } return(true); }