Пример #1
0
        // Dev10# 923217 - SiteMapProvider URL Table Invalid Using Cookieless
        // Don't keep the modifier inside the links table. Apply the modifier as approriate on demand
        private static SiteMapNode ApplyModifierIfExists(SiteMapNode node)
        {
            HttpContext context = HttpContext.Current;

            // Do nothing if the modifier doesn't apply
            if (node == null || context == null || !context.Response.UsePathModifier)
            {
                return(node);
            }

            // Set Url with the modifier applied
            SiteMapNode resultNode = node.Clone();

            resultNode.Url = context.Response.ApplyAppPathModifier(node.Url);

            return(resultNode);
        }
        public virtual SiteMapNode Clone(bool cloneParentNodes)
        {
            SiteMapNode node = this.Clone();

            if (cloneParentNodes)
            {
                SiteMapNode node2      = node;
                SiteMapNode parentNode = this.ParentNode;
                while (parentNode != null)
                {
                    SiteMapNode node4 = parentNode.Clone();
                    node2.ParentNode = node4;
                    node4.ChildNodes = new SiteMapNodeCollection(node2);
                    parentNode       = parentNode.ParentNode;
                    node2            = node4;
                }
            }
            return(node);
        }
Пример #3
0
        public virtual SiteMapNode Clone(bool cloneParentNodes)
        {
            SiteMapNode current = Clone();

            if (cloneParentNodes)
            {
                SiteMapNode node   = current;
                SiteMapNode parent = ParentNode;
                while (parent != null)
                {
                    SiteMapNode cloneParent = parent.Clone();
                    node.ParentNode        = cloneParent;
                    cloneParent.ChildNodes = new SiteMapNodeCollection(node);

                    parent = parent.ParentNode;
                    node   = cloneParent;
                }
            }

            return(current);
        }
Пример #4
0
		public void Node_Null_Attrib_clone ()
		{
			SiteMapNode node = new SiteMapNode (new DummyProvider (), "", "", "", null, null, null, null, null);
			SiteMapNode copy = node.Clone ();
			Assert.IsNotNull (copy, "Node not created");
			Assert.AreEqual (copy, node, "Cloning failed");
		}
Пример #5
0
        // Dev10# 923217 - SiteMapProvider URL Table Invalid Using Cookieless
        // Don't keep the modifier inside the links table. Apply the modifier as approriate on demand
        private static SiteMapNode ApplyModifierIfExists(SiteMapNode node) {
            HttpContext context = HttpContext.Current;

            // Do nothing if the modifier doesn't apply
            if (node == null || context == null || !context.Response.UsePathModifier) {
                return node;
            }

            // Set Url with the modifier applied
            SiteMapNode resultNode = node.Clone();
            resultNode.Url = context.Response.ApplyAppPathModifier(node.Url);
 
            return resultNode;
        }
Пример #6
0
    /// <summary>
    /// Check Quyền user truy cập từng trang
    /// </summary>
    /// <param name="context"></param>
    /// <param name="node"></param>
    /// <returns></returns>
    public override bool IsAccessibleToUser(System.Web.HttpContext context, System.Web.SiteMapNode node)
    {
        if (node == null)
        {
            throw new System.ArgumentNullException("node");
        }

        if (context == null)
        {
            throw new System.ArgumentNullException("context");
        }

        if (!this.SecurityTrimmingEnabled)
        {
            return(true);
        }
        //add node vao listNode
        if (!ProviderAllNode.Contains(node))
        {
            ProviderAllNode.Add(node.Clone());
        }

        //check thuong tinh visible
        bool isVisible;

        if (bool.TryParse(node["visible"], out isVisible))
        {
            if (isVisible)
            {
                return(false);
            }
        }

        SiteMapNodeCollection lstNode = new SiteMapNodeCollection();

        System.Collections.IList roles = node.Roles;

        System.Security.Principal.IPrincipal user = context.User;

        string strDeny = node["deny"];

        //check deny
        if (strDeny != null)
        {
            string[] lstDeny = strDeny.Split(',');
            for (int i = 0; i < lstDeny.Length; i++)
            {
                if (lstDeny[i].Trim() == "*")
                {
                    return(false);
                }
                if (user != null)
                {
                    if (user.IsInRole(lstDeny[i].Trim()))
                    {
                        return(false);
                    }
                }
                else
                if (lstDeny[i].Trim() == "?")
                {
                    return(false);
                }
            }
        }

        if (roles == null || roles.Count == 0)
        {
            return(true);
        }
        if (user == null)
        {
            return(false);
        }

        foreach (string role in roles)
        {
            if ((role == "*") || user.IsInRole(role))
            {
                return(true);
            }
        }
        return(false);
    }