// Gets security information and exports it into the files. // excludeMetadataPermission indicates if model privileges for Metadata are exluded. private static void ExportSecurityInformation(bool excludeMetadataPermission, string fileName) { // Gets security information. SecurityPrincipalsGetRequest principalGetRequest = new SecurityPrincipalsGetRequest(); principalGetRequest.Criteria = new SecurityPrincipalsCriteria(); principalGetRequest.Criteria.All = true; principalGetRequest.Criteria.Type = PrincipalType.UserAccount; principalGetRequest.Criteria.ResultType = ResultType.Details; principalGetRequest.Criteria.SecurityResolutionType = SecurityResolutionType.Users; principalGetRequest.Criteria.ModelPrivilege = ResultType.Details; principalGetRequest.Criteria.FunctionPrivilege = ResultType.Details; principalGetRequest.Criteria.HierarchyMemberPrivilege = ResultType.Details; // Gets the security principals for all the users. SecurityPrincipalsGetResponse principalGetResponse = clientProxy.SecurityPrincipalsGet(principalGetRequest); HandleOperationErrors(principalGetResponse.OperationResult); System.Collections.ObjectModel.Collection<User> users = principalGetResponse.Principals.Users; // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (User anUser in users) { System.Collections.ObjectModel.Collection<ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection<ModelPrivilege>{}; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in anUser.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } anUser.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } principalGetRequest.Criteria.Type = PrincipalType.Group; principalGetRequest.Criteria.SecurityResolutionType = SecurityResolutionType.UserAndGroup; // Gets the security principals for all the groups. SecurityPrincipalsGetResponse principalGetGroupResponse = clientProxy.SecurityPrincipalsGet(principalGetRequest); HandleOperationErrors(principalGetGroupResponse.OperationResult); System.Collections.ObjectModel.Collection<Group> groups = principalGetGroupResponse.Principals.Groups; // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (Group aGroup in groups) { System.Collections.ObjectModel.Collection<ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection<ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in aGroup.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } aGroup.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } // Set users and groups objects to securityInformation. SecurityInformation securityInformation = new SecurityInformation(); securityInformation.Users = users; securityInformation.Groups = groups; // Serialization. XmlSerializer serializer = new XmlSerializer(typeof(SecurityInformation)); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { XmlDictionaryWriter xmlWriter = XmlDictionaryWriter.CreateBinaryWriter(fs); // Serializes the security information. serializer.Serialize(xmlWriter, securityInformation); fs.Flush(); } }
// Imports the security information from the files. // excludeMetadataPermission indicates if model privileges for Metadata are exluded. private static void ImportSecurityInformation(bool excludeMetadataPermission, string fileName) { // Deserialization. System.Collections.ObjectModel.Collection <User> users; System.Collections.ObjectModel.Collection <Group> groups; SecurityInformation securityInformation = new SecurityInformation(); XmlSerializer serializer = new XmlSerializer(typeof(SecurityInformation)); using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { XmlDictionaryReader xmlReader = XmlDictionaryReader.CreateBinaryReader(fs, XmlDictionaryReaderQuotas.Max); // Derializes the security information. securityInformation = (SecurityInformation)serializer.Deserialize(xmlReader); } // Gets users and groups objects from securityInformation. users = securityInformation.Users; groups = securityInformation.Groups; // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (User anUser in users) { System.Collections.ObjectModel.Collection <ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection <ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in anUser.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } anUser.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (Group aGroup in groups) { System.Collections.ObjectModel.Collection <ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection <ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in aGroup.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } aGroup.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } // Clones security principals for groups and users. SecurityPrincipalsRequest principalRequest = new SecurityPrincipalsRequest(); principalRequest.Principals = new SecurityPrincipals(); principalRequest.Principals.Groups = new System.Collections.ObjectModel.Collection <Group> { }; principalRequest.Principals.Users = new System.Collections.ObjectModel.Collection <User> { }; // Sets group objects. foreach (Group aGroup in groups) { principalRequest.Principals.Groups.Add(aGroup); } // Creates groups and their security principals. // Create groups before users since some of the users may belong to one of the groups and reference the group object. // Note that the security information assumes that GUIDs for objects such as Models are the same. MessageResponse response = clientProxy.SecurityPrincipalsClone(principalRequest); HandleOperationErrors(response.OperationResult); principalRequest.Principals.Groups = new System.Collections.ObjectModel.Collection <Group> { }; principalRequest.Principals.Users = new System.Collections.ObjectModel.Collection <User> { }; // Sets user objects. foreach (User aUser in users) { principalRequest.Principals.Users.Add(aUser); } // Creates users and their security principals. response = clientProxy.SecurityPrincipalsClone(principalRequest); HandleOperationErrors(response.OperationResult); }
// Imports the security information from the files. // excludeMetadataPermission indicates if model privileges for Metadata are exluded. private static void ImportSecurityInformation(bool excludeMetadataPermission, string fileName) { // Deserialization. System.Collections.ObjectModel.Collection<User> users; System.Collections.ObjectModel.Collection<Group> groups; SecurityInformation securityInformation = new SecurityInformation(); XmlSerializer serializer = new XmlSerializer(typeof(SecurityInformation)); using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { XmlDictionaryReader xmlReader = XmlDictionaryReader.CreateBinaryReader(fs, XmlDictionaryReaderQuotas.Max); // Derializes the security information. securityInformation = (SecurityInformation)serializer.Deserialize(xmlReader); } // Gets users and groups objects from securityInformation. users = securityInformation.Users; groups = securityInformation.Groups; // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (User anUser in users) { System.Collections.ObjectModel.Collection<ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection<ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in anUser.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } anUser.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (Group aGroup in groups) { System.Collections.ObjectModel.Collection<ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection<ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in aGroup.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } aGroup.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } // Clones security principals for groups and users. SecurityPrincipalsRequest principalRequest = new SecurityPrincipalsRequest(); principalRequest.Principals = new SecurityPrincipals(); principalRequest.Principals.Groups = new System.Collections.ObjectModel.Collection<Group> { }; principalRequest.Principals.Users = new System.Collections.ObjectModel.Collection<User> { }; // Sets group objects. foreach (Group aGroup in groups) { principalRequest.Principals.Groups.Add(aGroup); } // Creates groups and their security principals. // Create groups before users since some of the users may belong to one of the groups and reference the group object. // Note that the security information assumes that GUIDs for objects such as Models are the same. MessageResponse response = clientProxy.SecurityPrincipalsClone(principalRequest); HandleOperationErrors(response.OperationResult); principalRequest.Principals.Groups = new System.Collections.ObjectModel.Collection<Group> { }; principalRequest.Principals.Users = new System.Collections.ObjectModel.Collection<User> { }; // Sets user objects. foreach (User aUser in users) { principalRequest.Principals.Users.Add(aUser); } // Creates users and their security principals. response = clientProxy.SecurityPrincipalsClone(principalRequest); HandleOperationErrors(response.OperationResult); }
// Gets security information and exports it into the files. // excludeMetadataPermission indicates if model privileges for Metadata are exluded. private static void ExportSecurityInformation(bool excludeMetadataPermission, string fileName) { // Gets security information. SecurityPrincipalsGetRequest principalGetRequest = new SecurityPrincipalsGetRequest(); principalGetRequest.Criteria = new SecurityPrincipalsCriteria(); principalGetRequest.Criteria.All = true; principalGetRequest.Criteria.Type = PrincipalType.UserAccount; principalGetRequest.Criteria.ResultType = ResultType.Details; principalGetRequest.Criteria.SecurityResolutionType = SecurityResolutionType.Users; principalGetRequest.Criteria.ModelPrivilege = ResultType.Details; principalGetRequest.Criteria.FunctionPrivilege = ResultType.Details; principalGetRequest.Criteria.HierarchyMemberPrivilege = ResultType.Details; // Gets the security principals for all the users. SecurityPrincipalsGetResponse principalGetResponse = clientProxy.SecurityPrincipalsGet(principalGetRequest); HandleOperationErrors(principalGetResponse.OperationResult); System.Collections.ObjectModel.Collection <User> users = principalGetResponse.Principals.Users; // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (User anUser in users) { System.Collections.ObjectModel.Collection <ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection <ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in anUser.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } anUser.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } principalGetRequest.Criteria.Type = PrincipalType.Group; principalGetRequest.Criteria.SecurityResolutionType = SecurityResolutionType.UserAndGroup; // Gets the security principals for all the groups. SecurityPrincipalsGetResponse principalGetGroupResponse = clientProxy.SecurityPrincipalsGet(principalGetRequest); HandleOperationErrors(principalGetGroupResponse.OperationResult); System.Collections.ObjectModel.Collection <Group> groups = principalGetGroupResponse.Principals.Groups; // Exclude model privileges for Metadata when excludeMetadataPermission is true. if (excludeMetadataPermission) { foreach (Group aGroup in groups) { System.Collections.ObjectModel.Collection <ModelPrivilege> tempModelPrivileges = new System.Collections.ObjectModel.Collection <ModelPrivilege> { }; // Exclude model privileges for Metadata (internal id = 1). foreach (ModelPrivilege aPrivilege in aGroup.SecurityPrivilege.ModelPrivileges) { if (aPrivilege.ModelId.InternalId != 1) { tempModelPrivileges.Add(aPrivilege); } } aGroup.SecurityPrivilege.ModelPrivileges = tempModelPrivileges; } } // Set users and groups objects to securityInformation. SecurityInformation securityInformation = new SecurityInformation(); securityInformation.Users = users; securityInformation.Groups = groups; // Serialization. XmlSerializer serializer = new XmlSerializer(typeof(SecurityInformation)); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { XmlDictionaryWriter xmlWriter = XmlDictionaryWriter.CreateBinaryWriter(fs); // Serializes the security information. serializer.Serialize(xmlWriter, securityInformation); fs.Flush(); } }