コード例 #1
0
 public static bool InvalidColumnValue(
     object fieldValue, Enums.Operator op,
     string valueToCompare, Type fieldValueType)
 {
     return(ConditionEvaluator.MatchItemValueBasedOnOperatorAndValueType(
                op, valueToCompare, fieldValue, fieldValueType));
 }
コード例 #2
0
        public static bool Check(string userName, Enums.Operator op)
        {
            if (string.IsNullOrEmpty(userName) ||
                userName.Equals(Constants.AllSPPrinciples,
                                StringComparison.InvariantCultureIgnoreCase))
            {
                return(true);
            }

            if (userName.Contains("\\"))
            {
                switch (op)
                {
                // TODO: why In and Equal have same implementation?
                case Enums.Operator.In:
                    return(userName.ToLower() == SPContext.Current.Web.CurrentUser.LoginName.ToLower());

                case Enums.Operator.Equal:
                    return(userName.ToLower() == SPContext.Current.Web.CurrentUser.LoginName.ToLower());

                case Enums.Operator.NotEqual:
                    return(userName.ToLower() != SPContext.Current.Web.CurrentUser.LoginName.ToLower());

                case Enums.Operator.NotIn:
                    return(userName.ToLower() != SPContext.Current.Web.CurrentUser.LoginName.ToLower());

                default:
                    return(true);
                }
            }
            else
            {
                if (SPContext.Current.Web.Groups.OfType <SPGroup>().
                    Count(g => g.Name.Equals(userName,
                                             StringComparison.InvariantCultureIgnoreCase)) <= 0)
                {
                    return(false);
                }

                SPGroup grp = SPContext.Current.Web.Groups[userName];

                switch (op)
                {
                case Enums.Operator.In:
                    return(grp.ContainsCurrentUser);

                case Enums.Operator.Equal:
                    return(grp.ContainsCurrentUser);

                case Enums.Operator.NotIn:
                    return(!grp.ContainsCurrentUser);

                case Enums.Operator.NotEqual:
                    return(!grp.ContainsCurrentUser);

                default:
                    return(true);
                }
            }
        }
コード例 #3
0
        public static bool InvalidLengthValue(int length, Enums.Operator op,
                                              string lengthToCompare)
        {
            int intlengthToCompare;

            if (int.TryParse(lengthToCompare, out intlengthToCompare))
            {
                switch (op)
                {
                case Enums.Operator.Equal:
                    return(length == intlengthToCompare);

                case Enums.Operator.NotEqual:
                    return(length != intlengthToCompare);;

                case Enums.Operator.GreaterThan:
                    return(length > intlengthToCompare);

                case Enums.Operator.LessThan:
                    return(length < intlengthToCompare);

                default:
                    return(false);
                }
            }
            else
            {
                return(true);
            }
        }
コード例 #4
0
 public FieldDefault(Field onField, string forSPPrinciples,
                     Enums.Operator bySPPrinciplesOperator, string spContentType, object value)
 {
     this.OnField                = onField;
     this.ForSPPrinciples        = forSPPrinciples;
     this.BySPPrinciplesOperator = bySPPrinciplesOperator;
     this.SPContentType          = spContentType;
     this.Value = value;
 }
コード例 #5
0
        public PermissionBase(Enums.PermissionLevel level, List <Enums.SPForms> onForms,
                              string forSPPrinciples, Enums.Operator bySPPrinciplesOperator)
        {
            this.Level = level;

            this.OnForms                = onForms;
            this.ForSPPrinciples        = forSPPrinciples;
            this.BySPPrinciplesOperator = bySPPrinciplesOperator;

            this.Conditions = new Conditions();
        }
コード例 #6
0
 public FieldValidation(Field onField, Enums.ValidationRule rule, Enums.Operator byRuleOperator, object value, string errorMsg, string forSPPrinciples, Enums.Operator bySPPrinciplesOperator)
 {
     this.OnField                = onField;
     this.Rule                   = rule;
     this.ByRuleOperator         = byRuleOperator;
     this.Value                  = value;
     this.ErrorMsg               = errorMsg;
     this.ForSPPrinciples        = forSPPrinciples;
     this.BySPPrinciplesOperator = bySPPrinciplesOperator;
     this.Conditions             = new Conditions();
 }
コード例 #7
0
        //TODO: check the values based on column type for below types..

        private static bool CheckFromListItem(string fieldName,
                                              Enums.Operator op, string value)
        {
            if (SPContext.Current.List.Fields.ContainsField(fieldName))
            {
                object fieldValue     = SPContext.Current.ListItem[fieldName];
                Type   fieldValueType =
                    SPContext.Current.List.Fields.GetFieldByInternalName(fieldName).
                    FieldValueType;

                return(MatchItemValueBasedOnOperatorAndValueType(op, value,
                                                                 fieldValue, fieldValueType));
            }
            else
            {
                return(true);
            }
        }
コード例 #8
0
        private static bool CheckFromUIValue(string fieldName, Enums.Operator op, string value, SPFormContext formContext, string clientID)
        {
            BaseFieldControl field = ValidationInjector.GetFieldControlByName(fieldName, formContext, clientID);

            // to manage the rich field UI text
            if (field is RichTextField)
            {
                string fieldVaue = ((RichTextField)field).HiddenInput.Value;

                switch (op)
                {
                case Enums.Operator.Equal:
                    return(fieldVaue.Equals(value));

                case Enums.Operator.NotEqual:
                    return(!fieldVaue.Equals(value));

                case Enums.Operator.Contains:
                    return(fieldVaue.Contains(value));

                case Enums.Operator.NotContains:
                    return(!fieldVaue.Contains(value));

                default:
                    return(false);
                }
            }
            else
            {
                if (field is LookupField)
                {
                    LookupField l = field as LookupField;
                    String      v = l.Value.ToString();
                }

                return(MatchItemValueBasedOnOperatorAndValueType(op, value, field.Value, field.Field.FieldValueType));
            }
        }
コード例 #9
0
        private static bool CompareValuesBasedOnOperator(string sourceValue,
                                                         Enums.Operator op, string targetValue)
        {
            sourceValue = sourceValue.Trim();
            targetValue = targetValue.Trim();
            switch (op)
            {
            case Enums.Operator.Equal:
                return(sourceValue.Equals(targetValue, StringComparison.InvariantCultureIgnoreCase));

            case Enums.Operator.NotEqual:
                return(!sourceValue.Equals(targetValue, StringComparison.InvariantCultureIgnoreCase));

            case Enums.Operator.Contains:
                return(sourceValue.IndexOf(targetValue, StringComparison.InvariantCultureIgnoreCase) > -1);

            case Enums.Operator.NotContains:
                return(!(sourceValue.IndexOf(targetValue, StringComparison.InvariantCultureIgnoreCase) > -1));

            default:
                return(false);
            }
        }
コード例 #10
0
        public static bool MatchItemValueBasedOnOperatorAndValueType(Enums.Operator op, string value, object fieldValue, Type fieldValueType)
        {
            if (fieldValue != null && !string.IsNullOrEmpty(fieldValue.ToString()))
            {
                if (fieldValueType == (typeof(SPFieldUrlValue)))
                {
                    SPFieldUrlValue fieldUrlValue = new SPFieldUrlValue(fieldValue.ToString());
                    bool            isDescMatched = CompareValuesBasedOnOperator(fieldUrlValue.Description, op, value);
                    bool            isUrlMatched  = CompareValuesBasedOnOperator(fieldUrlValue.Url, op, value);

                    return(isDescMatched || isUrlMatched);
                }
                else if (fieldValueType == (typeof(SPFieldUserValue)))
                {
                    SPFieldUserValue fieldUserValue = new SPFieldUserValue(SPContext.Current.Web, fieldValue.ToString());

                    string userLoginName   = fieldUserValue.User.LoginName;
                    string userDispalyName = fieldUserValue.User.Name;

                    bool isLoginMatched       = CompareValuesBasedOnOperator(userLoginName, op, value);
                    bool isDisplayNameMatched = CompareValuesBasedOnOperator(userLoginName, op, value);

                    return(isLoginMatched || isDisplayNameMatched);
                }
                else if (fieldValueType == (typeof(SPFieldUserValueCollection)))
                {
                    SPFieldUserValueCollection fieldUserValueCollection = new SPFieldUserValueCollection(SPContext.Current.Web, fieldValue.ToString());
                    string userLoginNames   = "";
                    string userDispalyNames = "";

                    foreach (SPFieldUserValue userValue in fieldUserValueCollection)
                    {
                        userLoginNames += userValue.LookupValue + Constants.ValueCollectionSeparator;

                        if (userValue.User != null)
                        {
                            userDispalyNames += userValue.User.Name + Constants.ValueCollectionSeparator;
                        }
                    }

                    userLoginNames   = userLoginNames.TrimEnd(Constants.ValueCollectionSeparator.ToCharArray());
                    userDispalyNames = userDispalyNames.TrimEnd(Constants.ValueCollectionSeparator.ToCharArray());

                    bool isLoginMatched       = CompareValuesBasedOnOperator(userLoginNames, op, value);
                    bool isDisplayNameMatched = CompareValuesBasedOnOperator(userLoginNames, op, value);

                    return(isLoginMatched || isDisplayNameMatched);
                }
                else if (fieldValueType == (typeof(SPFieldLookupValue)))
                {
                    SPFieldLookupValue fieldLookupValue = new SPFieldLookupValue(fieldValue.ToString());

                    string strFieldValue = fieldLookupValue.LookupValue;
                    return(CompareValuesBasedOnOperator(strFieldValue, op, value));
                }
                else if (fieldValueType == (typeof(SPFieldLookupValueCollection)))
                {
                    SPFieldLookupValueCollection fieldLookupValueCollection = new SPFieldLookupValueCollection(fieldValue.ToString());
                    string strFieldValue = "";

                    foreach (SPFieldLookupValue lookup in fieldLookupValueCollection)
                    {
                        strFieldValue += lookup.LookupValue + Constants.ValueCollectionSeparator;
                    }

                    strFieldValue = strFieldValue.TrimEnd(Constants.ValueCollectionSeparator.ToCharArray());
                    return(CompareValuesBasedOnOperator(strFieldValue, op, value));
                }
                else if (fieldValueType == (typeof(DateTime)))
                {
                    DateTime sourceDT = DateTime.Parse(fieldValue.ToString());
                    DateTime targetDT = new DateTime();
                    if (DateTime.TryParse(value, out targetDT))
                    {
                        switch (op)
                        {
                        case Enums.Operator.Equal:
                            return(sourceDT == targetDT);

                        case Enums.Operator.NotEqual:
                            return(sourceDT != targetDT);

                        case Enums.Operator.GreaterThan:
                            return(sourceDT > targetDT);

                        case Enums.Operator.GreaterThanOrEqual:
                            return(sourceDT >= targetDT);

                        case Enums.Operator.LessThan:
                            return(sourceDT < targetDT);

                        case Enums.Operator.LessThanOrEqual:
                            return(sourceDT <= targetDT);

                        default:
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (fieldValueType == (typeof(int)))
                {
                    int sourceInt = int.Parse(fieldValue.ToString());
                    int targetInt;
                    if (Int32.TryParse(value, out targetInt))
                    {
                        switch (op)
                        {
                        case Enums.Operator.Equal:
                            return(sourceInt == targetInt);

                        case Enums.Operator.NotEqual:
                            return(sourceInt != targetInt);

                        case Enums.Operator.GreaterThan:
                            return(sourceInt > targetInt);

                        case Enums.Operator.GreaterThanOrEqual:
                            return(sourceInt >= targetInt);

                        case Enums.Operator.LessThan:
                            return(sourceInt < targetInt);

                        case Enums.Operator.LessThanOrEqual:
                            return(sourceInt <= targetInt);

                        default:
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                else if (fieldValueType == (typeof(Boolean)))
                {
                    bool sourceBool = Boolean.Parse(fieldValue.ToString());
                    bool targetBool = false;

                    if (value.Equals("True", StringComparison.InvariantCultureIgnoreCase) || value.Equals("Yes", StringComparison.InvariantCultureIgnoreCase))
                    {
                        targetBool = true;
                    }
                    else if (value.Equals("False", StringComparison.InvariantCultureIgnoreCase) || value.Equals("No", StringComparison.InvariantCultureIgnoreCase))
                    {
                        targetBool = false;
                    }
                    else
                    {
                        return(false);
                    }

                    switch (op)
                    {
                    case Enums.Operator.Equal:
                        return(sourceBool == targetBool);

                    case Enums.Operator.NotEqual:
                        return(sourceBool != targetBool);

                    case Enums.Operator.Contains:
                        return(sourceBool == targetBool);

                    case Enums.Operator.NotContains:
                        return(sourceBool != targetBool);

                    default:
                        return(false);
                    }
                }
                else // default matching will be performed with string type
                {
                    string strFieldValue = fieldValue.ToString();
                    return(CompareValuesBasedOnOperator(strFieldValue, op, value));
                }
            }
            else
            {
                return(false);
            }
        }
コード例 #11
0
 public TabPermission(bool isDefault, Enums.PermissionLevel level,
                      List <Enums.SPForms> onForms, string forSPPrinciples, Enums.Operator bySPPrinciplesOperator)
     : base(level, onForms, forSPPrinciples, bySPPrinciplesOperator)
 {
     this.IsDefault = isDefault;
 }
コード例 #12
0
 public FieldPermission(Field OnField, Enums.PermissionLevel level, List <Enums.SPForms> onForms, string forSPPrinciples, Enums.Operator bySPPrinciplesOperator)
     : base(level, onForms, forSPPrinciples, bySPPrinciplesOperator)
 {
     this.OnField = OnField;
 }
コード例 #13
0
        protected void createTabXML()
        {
            bool isDefault = false;
            Tabs allTabs   = new Tabs();

            DataTable tabsDataTable                = TabDataTable;
            DataTable permissionDataTable          = TabPermissionDataTable;
            DataTable permissionConditionDataTable = PermissionConditionDataTable;

            foreach (DataRow drTab in tabsDataTable.Rows)
            {
                ushort index        = Convert.ToUInt16(drTab[Constants.TabField.Index]);
                string title        = drTab[Constants.TabField.Title].ToString();
                string desc         = drTab[Constants.TabField.Description].ToString();
                bool   isTabDefault = Helper.ConvertToBool(drTab[Constants.TabField.IsDefault].ToString());
                int    tabID        = Convert.ToInt32(drTab[Constants.RowID]);

                Tab t1 = new Tab(index, title, desc);
                t1.CommaSeperatedFields = drTab[Constants.TabField.FieldToString].ToString();
                t1.IsSelected           = isTabDefault;

                DataTable permissionOfSelectedTab = Helper.GetViewFromDataTable(permissionDataTable, tabID, Constants.PermissionField.TabRowID).ToTable();

                if (permissionOfSelectedTab != null && permissionOfSelectedTab.Rows.Count > 0)
                {
                    foreach (DataRow drPermission in permissionOfSelectedTab.Rows)
                    {
                        bool IsDefault = Helper.ConvertToBool(drPermission[Constants.PermissionField.IsDefault].ToString());
                        Enums.PermissionLevel permissionLevel = (Enums.PermissionLevel)(Convert.ToInt32(drPermission[Constants.PermissionField.PermissionID].ToString()));
                        string         OnForms                = drPermission[Constants.PermissionField.OnFormIDs].ToString();
                        string         ForSPPrinciples        = drPermission[Constants.PermissionField.SPPrinciples].ToString();
                        Enums.Operator BySPPrinciplesOperator = (Enums.Operator)(Convert.ToInt32(drPermission[Constants.PermissionField.SPPrinciplesOperatorID].ToString()));
                        int            permissionID           = Convert.ToInt32(drPermission[Constants.RowID]);

                        TabPermission perm1 = new TabPermission(isDefault, permissionLevel, TabPermission.ParseForms(OnForms), ForSPPrinciples, BySPPrinciplesOperator);


                        DataTable conditionOfSelectedPermission = Helper.GetViewFromDataTable(permissionConditionDataTable, permissionID, Constants.ConditionField.PermissionRowID).ToTable();

                        if (conditionOfSelectedPermission != null && conditionOfSelectedPermission.Rows.Count > 0)
                        {
                            foreach (DataRow drCondition in conditionOfSelectedPermission.Rows)
                            {
                                string         OnField         = drCondition[Constants.ConditionField.SPFieldName].ToString();
                                Enums.Operator ByFieldOperator = (Enums.Operator)Convert.ToInt32(drCondition[Constants.ConditionField.SPFieldOperatorID].ToString());
                                object         Value           = drCondition[Constants.ConditionField.Value].ToString();

                                perm1.Conditions.Add(new Condition(new Field(OnField), ByFieldOperator, Value));
                            }
                        }

                        t1.Permissions.Add(perm1);
                    }
                }

                allTabs.Add(t1);
            }

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite objSite = new SPSite(SPContext.Current.Web.Url.ToString()))
                {
                    using (SPWeb objWeb = objSite.OpenWeb())
                    {
                        SPList list = objWeb.Lists[new Guid(Request.QueryString["List"])];

                        objWeb.AllowUnsafeUpdates = true;
                        string xml = allTabs.ToString();
                        if (allTabs.Count > 0 && Helper.IsValidXml(xml))
                        {
                            Helper.CreateConfigFile(list, Constants.ConfigFile.TabSettingFile, xml);
                        }
                        else
                        {
                            Helper.DeleteConfigFile(list, Constants.ConfigFile.TabSettingFile, xml);
                        }

                        objWeb.AllowUnsafeUpdates = false;
                    }
                }
            });
        }
コード例 #14
0
 public Condition(Field onField, Enums.Operator byFieldOperator, object value)
 {
     this.OnField         = onField;
     this.ByFieldOperator = byFieldOperator;
     this.Value           = value;
 }
コード例 #15
0
        protected void createTabXML()
        {
            FieldPermissions allFieldPermissions = new FieldPermissions();

            DataTable permissionDataTable          = TabPermissionDataTable;
            DataTable permissionConditionDataTable = PermissionConditionDataTable;

            foreach (DataRow drPermission in permissionDataTable.Rows)
            {
                string OnField   = drPermission[Constants.PermissionField.SPFieldName].ToString();
                bool   IsDefault = Helper.ConvertToBool(drPermission[Constants.PermissionField.IsDefault].ToString());
                Enums.PermissionLevel permissionLevel = (Enums.PermissionLevel)(Convert.ToInt32(drPermission[Constants.PermissionField.PermissionID].ToString()));
                string         OnForms                = drPermission[Constants.PermissionField.OnFormIDs].ToString();
                string         ForSPPrinciples        = drPermission[Constants.PermissionField.SPPrinciples].ToString();
                Enums.Operator BySPPrinciplesOperator = (Enums.Operator)(Convert.ToInt32(drPermission[Constants.PermissionField.SPPrinciplesOperatorID].ToString()));
                int            permissionID           = Convert.ToInt32(drPermission[Constants.RowID]);

                FieldPermission perm1 = new FieldPermission(new Field(OnField), permissionLevel, FieldPermission.ParseForms(OnForms), ForSPPrinciples, BySPPrinciplesOperator);


                DataTable conditionOfSelectedPermission = Helper.GetViewFromDataTable(permissionConditionDataTable, permissionID, Constants.ConditionField.PermissionRowID).ToTable();

                if (conditionOfSelectedPermission != null && conditionOfSelectedPermission.Rows.Count > 0)
                {
                    foreach (DataRow drCondition in conditionOfSelectedPermission.Rows)
                    {
                        string         OnField2        = drCondition[Constants.ConditionField.SPFieldName].ToString();
                        Enums.Operator ByFieldOperator = (Enums.Operator)Convert.ToInt32(drCondition[Constants.ConditionField.SPFieldOperatorID].ToString());
                        object         Value           = drCondition[Constants.ConditionField.Value].ToString();

                        perm1.Conditions.Add(new Condition(new Field(OnField2), ByFieldOperator, Value));
                    }
                }

                allFieldPermissions.Add(perm1);
            }


            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite objSite = new SPSite(SPContext.Current.Web.Url.ToString()))
                {
                    using (SPWeb objWeb = objSite.OpenWeb())
                    {
                        SPList list = objWeb.Lists[new Guid(Request.QueryString["List"])];

                        objWeb.AllowUnsafeUpdates = true;

                        string xml = allFieldPermissions.ToString();
                        if (allFieldPermissions.Count > 0 && Helper.IsValidXml(xml))
                        {
                            Helper.CreateConfigFile(list, Constants.ConfigFile.FieldPermissionFile, xml);
                        }
                        else
                        {
                            Helper.DeleteConfigFile(list, Constants.ConfigFile.FieldPermissionFile, xml);
                        }

                        objWeb.AllowUnsafeUpdates = false;
                    }
                }
            });
        }
コード例 #16
0
        protected void createTabXML()
        {
            FieldValidations allFieldsValidations = new FieldValidations();

            DataTable validationDataTable          = ValidationDataTable;
            DataTable validationConditionDataTable = ValidationConditionDataTable;

            foreach (DataRow drValidationRow in validationDataTable.Rows)
            {
                string FieldName = drValidationRow[Constants.ValidationField.SPFieldName].ToString();
                Enums.ValidationRule ValidationRule  = (Enums.ValidationRule)(Convert.ToInt32(drValidationRow[Constants.ValidationField.ValidationRuleID].ToString()));
                Enums.Operator       FieldOperatorID = (Enums.Operator)(Convert.ToInt32(drValidationRow[Constants.ValidationField.SPFieldOperatorID].ToString()));
                string         ValidationValue       = drValidationRow[Constants.ValidationField.Value].ToString();
                string         ErrorMessage          = drValidationRow[Constants.ValidationField.ErrorMessage].ToString();
                Enums.Operator BySPPrincipalOperator = (Enums.Operator)(Convert.ToInt32(drValidationRow[Constants.ValidationField.SPPrinciplesOperatorID].ToString()));
                string         ForSPPrinciples       = drValidationRow[Constants.ValidationField.SPPrinciples].ToString();

                FieldValidation objValidation = new FieldValidation(new Field(FieldName), ValidationRule, FieldOperatorID, ValidationValue, ErrorMessage, ForSPPrinciples, BySPPrincipalOperator);


                int       validationID = Convert.ToInt32(drValidationRow[Constants.RowID]);
                DataTable conditionOfSelectedValidation = Helper.GetViewFromDataTable(validationConditionDataTable, validationID, Constants.ConditionField.ValidationRowID).ToTable();

                if (conditionOfSelectedValidation != null && conditionOfSelectedValidation.Rows.Count > 0)
                {
                    foreach (DataRow drCondition in conditionOfSelectedValidation.Rows)
                    {
                        string         OnField2        = drCondition[Constants.ConditionField.SPFieldName].ToString();
                        Enums.Operator ByFieldOperator = (Enums.Operator)Convert.ToInt32(drCondition[Constants.ConditionField.SPFieldOperatorID].ToString());
                        object         Value           = drCondition[Constants.ConditionField.Value].ToString();
                        objValidation.Conditions.Add(new Condition(new Field(OnField2), ByFieldOperator, Value));
                    }
                }

                allFieldsValidations.Add(objValidation);
            }


            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite objSite = new SPSite(SPContext.Current.Web.Url.ToString()))
                {
                    using (SPWeb objWeb = objSite.OpenWeb())
                    {
                        SPList list = objWeb.Lists[new Guid(Request.QueryString["List"])];
                        objWeb.AllowUnsafeUpdates = true;


                        string xml = allFieldsValidations.ToString();
                        if (allFieldsValidations.Count > 0 && Helper.IsValidXml(xml))
                        {
                            Helper.CreateConfigFile(list, Constants.ConfigFile.FieldValidationFile, xml);
                        }
                        else
                        {
                            Helper.DeleteConfigFile(list, Constants.ConfigFile.FieldValidationFile, xml);
                        }

                        objWeb.AllowUnsafeUpdates = false;
                    }
                }
            });
        }