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