Beispiel #1
0
        private static HashSet <SecurityIdentity> ReadHashSet(ISerializationContext context)
        {
            int count = context.Reader.ReadInt32();
            HashSet <SecurityIdentity> value = new HashSet <SecurityIdentity>();

            for (int i = 0; i < count; i++)
            {
                SecurityIdentity identity = new SecurityIdentity();
                identity.ReadBinary(context);
                value.Add(identity);
            }

            return(value);
        }
Beispiel #2
0
        public void ReadBinary(ISerializationContext context)
        {
            Readers = ReadHashSet(context);
            Writers = ReadHashSet(context);
            Owners  = ReadHashSet(context);

            // Read column security rules
            RestrictedColumns = new SecuredSet <List <string> >();
            int columnRuleCount = context.Reader.ReadInt32();

            for (int i = 0; i < columnRuleCount; ++i)
            {
                SecurityIdentity identity = new SecurityIdentity();
                identity.ReadBinary(context);

                List <string> columnsSecured = new List <string>();

                int columnsForGroupCount = context.Reader.ReadInt32();
                for (int j = 0; j < columnsForGroupCount; ++j)
                {
                    columnsSecured.Add(context.Reader.ReadString());
                }

                RestrictedColumns[identity] = columnsSecured;
            }

            // Read row security rules
            RowRestrictedUsers = new SecuredSet <string>();
            int rowRuleCount = context.Reader.ReadInt32();

            for (int i = 0; i < rowRuleCount; ++i)
            {
                SecurityIdentity identity = new SecurityIdentity();
                identity.ReadBinary(context);

                string filterForIdentity = context.Reader.ReadString();
                RowRestrictedUsers[identity] = filterForIdentity;
            }
        }