public static void RecordPermissions(this SPSecurableObject secObj, DbAdapter dbConnection, Guid siteGuid, Guid caseWebGuid, Guid?childWebGuid, Guid?listGuid, Guid?listItemGuid) { string roleAssignmentsXml = secObj.RoleAssignments.Xml; CreateSPObjPermSProc sProc = new CreateSPObjPermSProc(siteGuid, caseWebGuid, childWebGuid, listGuid, listItemGuid, roleAssignmentsXml); dbConnection.ExecuteNonQueryStoredProcedure(sProc); }
private void LockCaseSite(SPListItem caseItem, SPWeb caseWeb, DbAdapter dbAdapter) { CreateSPObjPermSProc sProc; if (caseItem != null) { // Record permissions of the Case list item sProc = new CreateSPObjPermSProc(caseWeb.Site.ID, caseWeb.ID, caseItem.ParentList.ParentWeb.ID, caseItem.ParentList.ID, caseItem.UniqueId, caseItem.RoleAssignments.Xml); dbAdapter.ExecuteNonQueryStoredProcedure(sProc); // Reset permissions of case list item and reconfigure SPUser assignedTo, supervisor; GetAssignedToAndSupervisor(caseItem, out assignedTo, out supervisor); caseItem.ResetRoleInheritance(); LockItemPermissions(caseItem, caseWeb, assignedTo, supervisor); } // Record the permissions of the case web sProc = new CreateSPObjPermSProc(caseWeb.Site.ID, caseWeb.ID, null, null, null, caseWeb.RoleAssignments.Xml); dbAdapter.ExecuteNonQueryStoredProcedure(sProc); caseWeb.RecordPermissions(caseWeb, dbAdapter); // Reset permissions of case web and reconfigure caseWeb.ResetRoleInheritance(); // Recursively redefine all object permissions and force them to inherit parent caseWeb.BreakRoleInheritance(false); // Break at web level and redefine permissions from top->down caseWeb.TryGrantPermission(caseWeb.AssociatedOwnerGroup, SPRoleType.Administrator); caseWeb.TryGrantPermission(caseWeb.AssociatedMemberGroup, SPRoleType.Reader); caseWeb.TryGrantPermission(caseWeb.AssociatedVisitorGroup, SPRoleType.Reader); caseWeb.Update(); }