/// <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(); } } }
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(); } } }