コード例 #1
0
        protected QueryNode ApplyRuleConditions(QueryNode node, string tableName, DalcOperation operation)
        {
            var resNode = new QueryGroupNode(QueryGroupNodeType.And);

            resNode.Nodes.Add(node);
            var context = CreatePermissionContext(tableName, operation);

            for (int i = 0; i < Rules.Length; i++)
            {
                var r = Rules[i];
                var extraCondition = r.ComposeCondition(context);
                if (extraCondition != null)
                {
                    resNode.Nodes.Add(extraCondition);
                }
            }
            return(resNode.Nodes.Count > 1 ? resNode : node);
        }
コード例 #2
0
ファイル: PermissionContext.cs プロジェクト: ruo2012/nicnet
 public PermissionContext(string tableName, DalcOperation operation)
 {
     TableName = tableName;
     Principal = Thread.CurrentPrincipal;
     Operation = operation;
 }
コード例 #3
0
ファイル: QueryRule.cs プロジェクト: ruo2012/nicnet
 public QueryRule(string tableName, DalcOperation op, string relexCondition)
 {
     TableName     = tableName;
     Operation     = op;
     RuleCondition = (new RelExParser()).ParseCondition(relexCondition);
 }
コード例 #4
0
ファイル: QueryRule.cs プロジェクト: ruo2012/nicnet
 public QueryRule(string tableName, DalcOperation op, QueryNode ruleCondition)
 {
     TableName     = tableName;
     Operation     = op;
     RuleCondition = ruleCondition;
 }
コード例 #5
0
 protected virtual PermissionContext CreatePermissionContext(string tableName, DalcOperation op)
 {
     if (GetPermissionContext != null)
     {
         return(GetPermissionContext(tableName, op));
     }
     return(new PermissionContext(tableName, op));
 }