예제 #1
0
        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);
        }
예제 #2
0
        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();
        }