<%@ Page language="C#" %> <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="SP" Namespace="Microsoft.SharePoint" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Web" %> <% XmlDocument oXmlDoc = new XmlDocument(); oXmlDoc.Load(Request.InputStream); XmlElement oRoot = oXmlDoc.DocumentElement; XmlNode oNode = null; XmlNode oColNode = null; string sURL = ""; string sProjID = ""; string sPWAExtranetUrl = ""; string sPortalUrl = ""; string sPortalName = ""; string sSiteUrl = ""; string sOperation = ""; string sRoleName = ""; string sRoleDesc = ""; int lPermMask = 0; sSiteUrl = oRoot.SelectSingleNode("SITEURL").InnerText; SPSite spServer = new SPSite(sSiteUrl); SPWeb spWeb = spServer.RootWeb; oNode = oRoot.SelectSingleNode("OPERATION"); if(oNode != null) { sOperation = oNode.InnerText; } if(sOperation != "RemoveAdminUsers") { sURL = oRoot.SelectSingleNode("PWAURL").InnerText; sProjID = oRoot.SelectSingleNode("PWAPROJID").InnerText; sPWAExtranetUrl = oRoot.SelectSingleNode("PWAEXTRANETURL").InnerText; sPortalUrl = oRoot.SelectSingleNode("PORTALURL").InnerText; sPortalName = oRoot.SelectSingleNode("PORTALNAME").InnerText; spWeb.Properties["MSPWAURL"] = sURL; spWeb.Properties["MSPWAPROJID"] = sProjID; spWeb.Properties["MSPWAEXTRANETURL"] = sPWAExtranetUrl; spWeb.Properties.Update(); if(sPortalUrl == "") { spServer.PortalUrl = null; } else { spServer.PortalUrl = sPortalUrl; spServer.PortalName = sPortalName; } } if((sOperation == "RemoveUsers") || (sOperation == "RemoveAdminUsers")) { oColNode = oRoot.SelectSingleNode("ROLES"); for(int n = 0; n < oColNode.ChildNodes.Count; n++) { sRoleName = oColNode.ChildNodes[n].SelectSingleNode("NAME").InnerText; try { bool bIsValid = true; SPRole spRole = null; try { spRole = spWeb.Roles[sRoleName]; } catch(Exception) { bIsValid = false; } if(!bIsValid || (spRole == null)) { sRoleDesc = oColNode.ChildNodes[n].SelectSingleNode("DESCRIPTION").InnerText; lPermMask = Convert.ToInt32(oColNode.ChildNodes[n].SelectSingleNode("MASK").InnerText); spWeb.Roles.Add(sRoleName, sRoleDesc, (SPRights) lPermMask); } else { SPUserCollection spOriginalRoleUsers = spRole.Users; if(spOriginalRoleUsers != null) { int cUsers = spOriginalRoleUsers.Count; string [] aUsersToRemove = new string[cUsers]; for(int i = 0; i < cUsers; i++) { aUsersToRemove[i] = spOriginalRoleUsers[i].LoginName; } for(int i = 0; i < cUsers; i++) { spWeb.Roles[sRoleName].Users.Remove(aUsersToRemove[i]); } } } } catch { } } // End of for...loop. } else if(sOperation == "SetSiteVarsCreateRoles") { // This else clause takes care of creating Roles and adding the Web Parts list to the Roles. SPList spList = null; string sWebPartListGuid = oRoot.SelectSingleNode("WEBPARTLISTGUID").InnerText; try { spList = spWeb.Lists.GetList(new Guid(sWebPartListGuid), false); } catch { spWeb.Lists.IncludeRootFolder = true; spList = spWeb.Lists[sWebPartListGuid]; } oColNode = oRoot.SelectSingleNode("ROLES"); for(int n = 0; n < oColNode.ChildNodes.Count; n++) { sRoleName = oColNode.ChildNodes[n].SelectSingleNode("NAME").InnerText; sRoleDesc = oColNode.ChildNodes[n].SelectSingleNode("DESCRIPTION").InnerText; lPermMask = Convert.ToInt32(oColNode.ChildNodes[n].SelectSingleNode("MASK").InnerText); try { spWeb.Roles.Add(sRoleName, sRoleDesc, (SPRights) lPermMask); spList.Permissions.Add(spWeb.Roles[sRoleName], (SPRights) lPermMask); } catch { } } // End of for...loop. // Update permissions on Issues and Risk lists for the Contributor Role. // oColNode = oRoot.SelectSingleNode("ISSUERISKROLE"); sRoleName = oColNode.SelectSingleNode("NAME").InnerText; lPermMask = Convert.ToInt32(oColNode.SelectSingleNode("MASK").InnerText); SPRole spContributorRole = spWeb.Roles[sRoleName]; string sIssueListGuid = oRoot.SelectSingleNode("ISSUELISTGUID").InnerText; try { spList = spWeb.Lists.GetList(new Guid(sIssueListGuid), false); } catch { spWeb.Lists.IncludeRootFolder = true; spList = spWeb.Lists[sIssueListGuid]; } spList.Permissions[spContributorRole].PermissionMask = (SPRights) lPermMask; string sRiskListGuid = oRoot.SelectSingleNode("RISKLISTGUID").InnerText; try { spList = spWeb.Lists.GetList(new Guid(sRiskListGuid), false); } catch { spWeb.Lists.IncludeRootFolder = true; spList = spWeb.Lists[sRiskListGuid]; } spList.Permissions[spContributorRole].PermissionMask = (SPRights) lPermMask; } // End of if(sOperation == ...) XmlDocument oXmlResult = new XmlDocument(); XmlNode oResultRoot=oXmlResult.CreateNode(XmlNodeType.Element, "XMLResultData", ""); oXmlResult.AppendChild(oResultRoot); XmlNode oResultNode = oXmlResult.CreateNode(XmlNodeType.Element, "Result", ""); oResultNode.InnerText = "SUCCESS"; oResultRoot.AppendChild(oResultNode); oNode = oXmlResult.CreateNode(XmlNodeType.Element, "PWAURL", ""); oNode.InnerText = sURL; oResultRoot.AppendChild(oNode); oNode = oXmlResult.CreateNode(XmlNodeType.Element, "PWAPROJID", ""); oNode.InnerText = sProjID; oResultRoot.AppendChild(oNode); oNode = oXmlResult.CreateNode(XmlNodeType.Element, "PWAEXTRANETURL", ""); oNode.InnerText = sPWAExtranetUrl; oResultRoot.AppendChild(oNode); Response.ContentType = "text/xml"; oXmlResult.Save(Response.OutputStream); Response.End(); %>