Ejemplo n.º 1
0
        /// <summary>
        /// Denies a specific page permissions for selected role.
        /// </summary>
        /// <param name="roleName">The role name.</param>
        /// <param name="roleProvider">The role provider name.</param>
        /// <param name="pageTitle">The page title.</param>
        public void DenyPermissionsForRole(string roleName, string roleProvider, string pageTitle)
        {
            RoleManager roleManager = RoleManager.GetManager(roleProvider);
            var         role        = roleManager.GetRole(roleName);

            PageManager pagemanager = PageManager.GetManager();
            PageNode    mypage      = pagemanager.GetPageNodes().FirstOrDefault(pn => pn.Title == pageTitle);

            if (mypage != null)
            {
                pagemanager.BreakPermiossionsInheritance(mypage);
                pagemanager.SaveChanges();

                if (role != null)
                {
                    var perm = pagemanager.GetPermissions()
                               .Where(p =>
                                      p.SetName == SecurityConstants.Sets.Pages.SetName &&
                                      p.PrincipalId == role.Id &&
                                      p.ObjectId == mypage.Id)
                               .SingleOrDefault();

                    if (perm == null)
                    {
                        perm = pagemanager.CreatePermission(
                            SecurityConstants.Sets.Pages.SetName,
                            mypage.Id,
                            role.Id);

                        mypage.Permissions.Add(perm);
                    }

                    perm = pagemanager.GetPermission(
                        SecurityConstants.Sets.Pages.SetName,
                        mypage.Id,
                        role.Id);

                    perm.DenyActions(
                        false,
                        SecurityConstants.Sets.Pages.View,
                        SecurityConstants.Sets.Pages.Create,
                        SecurityConstants.Sets.Pages.Modify,
                        SecurityConstants.Sets.Pages.CreateChildControls,
                        SecurityConstants.Sets.Pages.EditContent,
                        SecurityConstants.Sets.Pages.ChangeOwner,
                        SecurityConstants.Sets.Pages.Delete);

                    pagemanager.SaveChanges();
                }
            }
        }
Ejemplo n.º 2
0
        public override void CMD_update(Arguments args)
        {
            Action <PageTree> action     = null;
            VersionManager    versionMgr = VersionManager.GetManager();
            bool versionMgrSave          = false;

            if (args.ContainsKey("requiressl"))
            {
                if (args["requiressl"] == "true")
                {
                    action = p => p.root.RequireSsl = true;
                }
                else if (args["requiressl"] == "false")
                {
                    action = p => p.root.RequireSsl = false;
                }
            }
            else if (args.ContainsKey("nbversions"))
            {
                int nbVersions = int.Parse(args["nbversions"]);
                versionMgrSave = true;
                action         = p =>
                {
                    PageData paged = p.root.GetPageData();
                    if (paged == null)
                    {
                        return;
                    }
                    var changes        = versionMgr.GetItemVersionHistory(paged.Id);
                    var changeToRemove = changes
                                         .OrderByDescending(c => c.Version)
                                         .Skip(nbVersions)
                                         .FirstOrDefault();

                    if (changeToRemove != null)
                    {
                        // Delete all changes with version number smaller or equal to the specified number
                        versionMgr.TruncateVersions(paged.Id, changeToRemove.Version);
                    }
                };
            }
            else if (args.ContainsKey("cache"))
            {
                string cacheName      = args["cache"];
                string exactCacheName = null;
                if (cacheName == "site")
                {
                    exactCacheName = "";
                }
                else
                {
                    SystemConfig config   = Config.Get <SystemConfig>();
                    var          profiles = config.CacheSettings.Profiles;
                    exactCacheName = profiles.Keys.FirstOrDefault(k => k.ToLower() == cacheName);
                }
                if (exactCacheName == null)
                {
                    return;
                }

                action = p =>
                {
                    if (p.root.GetPageData() == null)
                    {
                        return;
                    }
                    p.root.GetPageData().OutputCacheProfile = exactCacheName;
                };
            }
            else if (args.ContainsKey("permissionsinheritance"))
            {
                string val = args["permissionsinheritance"];
                if (val == "true")
                {
                    action = p => pageMgr.RestorePermissionsInheritance(p.root);
                }
                if (val == "false")
                {
                    action = p => pageMgr.BreakPermiossionsInheritance(p.root);
                }
            }

            if (action != null)
            {
                pages.Update(action);
                pageMgr.SaveChanges();
                if (versionMgrSave)
                {
                    versionMgr.SaveChanges();
                }
            }
        }