Esempio n. 1
0
        // 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();
            }
        }
Esempio n. 2
0
        // 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);
        }
Esempio n. 3
0
        // 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);
        }
Esempio n. 4
0
        // 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();
            }
        }