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); }
public PermissionContext(string tableName, DalcOperation operation) { TableName = tableName; Principal = Thread.CurrentPrincipal; Operation = operation; }
public QueryRule(string tableName, DalcOperation op, string relexCondition) { TableName = tableName; Operation = op; RuleCondition = (new RelExParser()).ParseCondition(relexCondition); }
public QueryRule(string tableName, DalcOperation op, QueryNode ruleCondition) { TableName = tableName; Operation = op; RuleCondition = ruleCondition; }
protected virtual PermissionContext CreatePermissionContext(string tableName, DalcOperation op) { if (GetPermissionContext != null) { return(GetPermissionContext(tableName, op)); } return(new PermissionContext(tableName, op)); }