Ejemplo n.º 1
0
        private PermissionSet CreatePermissionSet(DbDataReader reader)
        {
            var isSystem  = reader.GetInt32(0) != 0;
            var allowBits = 0u;
            var denyBits  = 0u;

            for (var i = 0; i < PermissionType.NumberOfPermissionTypes; i++)
            {
                var value = (PermissionValue)reader.GetByte(i + 9);
                var shift = i;
                if (!isSystem)
                {
                    shift += PermissionType.NumberOfSystemPermissionTypes;
                }
                if (value == PermissionValue.Allow)
                {
                    allowBits |= 1u << shift;
                }
                else if (value == PermissionValue.Deny)
                {
                    denyBits |= 1u << shift;
                }
            }

            var allowBits1 = PermissionType.ConvertBitsIdToIndex(allowBits);
            var denyBits1  = PermissionType.ConvertBitsIdToIndex(denyBits);

            return(new PermissionSet(reader.GetInt32(7), reader.GetByte(8) != 0, allowBits1, denyBits1));
        }