Beispiel #1
0
        public void AddLink(string name, string href, ISecuredObject securedObject)
        {
            if (referenceLinks.ContainsKey(name))
            {
                IList <ReferenceLink> links;
                if (referenceLinks[name] is ReferenceLink)
                {
                    // promote to a list of links
                    links = new List <ReferenceLink>();
                    links.Add((ReferenceLink)referenceLinks[name]);
                    referenceLinks[name] = links;
                }
                else
                {
                    links = (IList <ReferenceLink>)referenceLinks[name];
                }

                links.Add(new ReferenceLink(securedObject)
                {
                    Href = href
                });
            }
            else
            {
                referenceLinks[name] = new ReferenceLink(securedObject)
                {
                    Href = href
                };
            }
        }
Beispiel #2
0
        /// <summary>
        /// Copies the ReferenceLinks to another ReferenceLinks and secures using the specified object.
        /// </summary>
        /// <param name="target"></param>
        public void CopyTo(ReferenceLinks target, ISecuredObject securedObject)
        {
            ArgumentUtility.CheckForNull(target, nameof(target));

            foreach (var link in this.Links)
            {
                if (link.Value is IList <ReferenceLink> )
                {
                    var hrefs = link.Value as IList <ReferenceLink>;
                    if (hrefs != null)
                    {
                        foreach (var href in hrefs)
                        {
                            target.AddLink(link.Key, href.Href, securedObject);
                        }
                    }
                }
                else if (link.Value is ReferenceLink)
                {
                    var href = link.Value as ReferenceLink;
                    if (href != null)
                    {
                        target.AddLink(link.Key, href.Href, securedObject);
                    }
                }
            }
        }
        public void ChangePermissions(PageManager manager, PageNode childNode, ISecuredObject newParent)
        {
            log.Info("Begin ChangePermissions.");

            manager.Provider.DeletePermissionsInheritanceAssociation(childNode.Parent, childNode);
            log.Debug("Breaking the inheritance of permissions.");

            var decoratorField = manager.Provider.GetType()
                                 .GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                                 .Where(f => f.Name == "providerDecorator").FirstOrDefault();

            log.Trace("Getting the decorator filed.");

            OpenAccessDecorator decorator = ((OpenAccessDecorator)decoratorField.GetValue(manager.Provider));

            log.Trace("Getting its value.");

            decorator.CreatePermissionInheritanceAssociation(newParent, childNode);
            log.Trace("Setting up the inheritance of permissions");

            childNode.SupportedPermissionSets = newParent.SupportedPermissionSets;
            log.Info("Setting the page's permissions.");

            manager.SaveChanges();
            log.Info("Saving Changes.");

            log.Info("Finishing ChangePermissions.");
        }
Beispiel #4
0
        public static bool IsSecured(this ISecuredObject secObj)
        {
            //borrowed from Telerik.Sitefinity.Security.Data.Linq.SitefinityQuery.Get
            var everyoneId = SecurityManager.ApplicationRoles["Everyone"].Id;

            return(!(((secObj.InheritsPermissions && !secObj.Permissions.Any <Permission>(p => (((((p.Deny % 2) != 0) && (p.ObjectId != secObj.Id))) && p.PrincipalId == everyoneId))) && secObj.Permissions.Any <Permission>(p => ((((p.Grant >= 0) && (p.ObjectId != secObj.Id))) && (p.PrincipalId) == everyoneId))) || ((!secObj.InheritsPermissions && !secObj.Permissions.Any <Permission>(p => (((((p.Deny % 2) != 0) && (p.ObjectId == secObj.Id))) && p.PrincipalId == everyoneId))) && secObj.Permissions.Any <Permission>(p => ((((p.Grant >= 0) && (p.ObjectId == secObj.Id))) && p.PrincipalId == everyoneId)))));
        }
 protected BaseSecuredObject(ISecuredObject securedObject)
 {
     if (securedObject != null)
     {
         this.m_namespaceId         = securedObject.NamespaceId;
         this.m_requiredPermissions = securedObject.RequiredPermissions;
         this.m_token = securedObject.GetToken();
     }
 }
Beispiel #6
0
 internal ReferenceLink(ISecuredObject securedObject)
 {
     m_securedObject = securedObject;
 }