/// <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);
            }
        }
Ejemplo n.º 2
0
        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);
        }