public void ShouldReturnTrueWhenHaveAccessToForeignTableField()
        {
            const string expression        = "Projects.Name.ToString()";
            const string currentDataSource = "datasource";
            const int    userId            = 234;

            _dataSourceAccessValidator.Setup(_ => _.CanReadSource(currentDataSource, userId)).Returns(true);
            _dataSourceAccessValidator.Setup(_ => _.CanReadSource("Projects", userId)).Returns(true);

            _queryEntityNamePropertyTypeNameResolver
            .Setup(_ => _.ResolvePropertyTypeName(currentDataSource, "Projects"))
            .Returns("Projects");

            _queryVariableNameBuilder.Setup(_ => _.IsSimpleValue("Projects")).Returns(true);
            _queryVariableNameBuilder.Setup(_ => _.IsSimpleValue("Name")).Returns(true);
            _queryVariableNameBuilder.Setup(_ => _.IsSimpleValue("ToString()")).Returns(false);

            var fieldInfo = new DataSourceFieldInfo();

            _dataSourceFieldInfoProvider
            .Setup(_ => _.TryGet("Projects", "Name", userId))
            .Returns(fieldInfo);

            DataSourceFieldInfo resultFieldInfo;

            var result = _target.IsAccessible(expression, currentDataSource, userId, out resultFieldInfo);

            result.Should().BeTrue();
        }
コード例 #2
0
        private static void SetSelectItemInfoFromField(DslFormatItem formatItem, DataSourceFieldInfo field)
        {
            if (string.IsNullOrEmpty(formatItem.DisplayName))
            {
                formatItem.DisplayName = field.Name;
            }

            if (string.IsNullOrEmpty(formatItem.Description))
            {
                formatItem.Description = field.Description;
            }
        }
コード例 #3
0
        public bool IsAccessible(string value, string dataSourceName, long userId, out DataSourceFieldInfo fieldInfo)
        {
            fieldInfo = null;

            var exprValues = GetSeparatedValues(value);

            var currentDataSourceName = dataSourceName;

            var lastSimpleValue = exprValues.LastOrDefault(_ => _queryVariableNameBuilder.IsSimpleValue(_));

            if (string.IsNullOrEmpty(lastSimpleValue))
            {
                return(true);
            }

            foreach (var exprValue in exprValues)
            {
                var isSipleValue = _queryVariableNameBuilder.IsSimpleValue(exprValue);

                if (!isSipleValue)
                {
                    continue;
                }

                if (exprValue == lastSimpleValue)
                {
                    break;
                }

                var entityName = _queryEntityNamePropertyTypeNameResolver.ResolvePropertyTypeName(
                    currentDataSourceName,
                    exprValue);

                var isCanReadCurrentDataSource = _dataSourceAccessValidator.CanReadSource(entityName, userId);

                if (!isCanReadCurrentDataSource)
                {
                    return(false);
                }

                currentDataSourceName = exprValue;
            }

            if (!string.IsNullOrEmpty(lastSimpleValue))
            {
                fieldInfo = _dataSourceFieldInfoProvider.TryGet(currentDataSourceName, lastSimpleValue, userId);
            }

            return(true);
        }