public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            ISiteSettingsRepository _SiteSettingsRepo = DependencyResolver.Current.GetService <ISiteSettingsRepository>();
            ISiteRepository         _SiteRepo         = DependencyResolver.Current.GetService <ISiteRepository>();
            var PasswordSettings = _SiteSettingsRepo.GetPasswordPolicy(_SiteRepo.CurrentSiteName());
            List <ModelClientValidationRule> rules = new List <ModelClientValidationRule>();

            if (!PasswordSettings.UsePasswordPolicy)
            {
                return(rules);
            }
            string ErrorMessage = GetErrorMessage(metadata.GetDisplayName());

            if (PasswordSettings.MinLength > 0)
            {
                rules.Add(new ModelClientValidationMinLengthRule(ErrorMessage, PasswordSettings.MinLength));
            }
            // can only have one regex
            if (!string.IsNullOrWhiteSpace(PasswordSettings.Regex))
            {
                rules.Add(new ModelClientValidationRegexRule(ErrorMessage, PasswordSettings.Regex));
            }
            else if (PasswordSettings.NumNonAlphanumericChars > 0)
            {
                rules.Add(new ModelClientValidationRegexRule(ErrorMessage, @"\W{" + PasswordSettings.NumNonAlphanumericChars + ",999}"));
            }
            return(rules);
        }
        /// <summary>
        /// Get localized error message, can be overwritten by Password Policy message in settings
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private string GetErrorMessage(string name)
        {
            ISiteSettingsRepository _SiteSettingsRepo = DependencyResolver.Current.GetService <ISiteSettingsRepository>();
            ISiteRepository         _SiteRepo         = DependencyResolver.Current.GetService <ISiteRepository>();
            var    PasswordSettings = _SiteSettingsRepo.GetPasswordPolicy(_SiteRepo.CurrentSiteName());
            string NewErrorMessage  = LocalizeString(!string.IsNullOrWhiteSpace(PasswordSettings.ViolationMessage) ? PasswordSettings.ViolationMessage : ErrorMessage);

            return(string.Format(CultureInfo.CurrentCulture, (NewErrorMessage ?? ""), name));
        }
 public override bool IsValid(object value)
 {
     if (value is string)
     {
         string          Password     = value.ToString();
         ISiteRepository _SiteRepo    = DependencyResolver.Current.GetService <ISiteRepository>();
         IUserService    _UserService = DependencyResolver.Current.GetService <IUserService>();
         return(_UserService.ValidatePasswordPolicy(Password, _SiteRepo.CurrentSiteName()));
     }
     return(false);
 }
        public IEnumerable <ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            ISiteSettingsRepository _SiteSettingsRepo = DependencyResolver.Current.GetService <ISiteSettingsRepository>();
            ISiteRepository         _SiteRepo         = DependencyResolver.Current.GetService <ISiteRepository>();
            var PasswordSettings = _SiteSettingsRepo.GetPasswordPolicy(_SiteRepo.CurrentSiteName());
            List <ModelClientValidationRule> rules = new List <ModelClientValidationRule>();

            if (!PasswordSettings.UsePasswordPolicy)
            {
                return(rules);
            }
            string ErrorMessage = GetErrorMessage(metadata.GetDisplayName());

            if (PasswordSettings.MinLength > 0)
            {
                rules.Add(new ModelClientValidationMinLengthRule(ErrorMessage, PasswordSettings.MinLength));
            }
            // can only have one regex
            if (!string.IsNullOrWhiteSpace(PasswordSettings.Regex))
            {
                rules.Add(new ModelClientValidationRegexRule(ErrorMessage, PasswordSettings.Regex));
            }
            else if (PasswordSettings.NumNonAlphanumericChars > 0)
            {
                string Rule = "(?=.*";
                // Add a \W_ (at least 1) + Anything else rule for each non alphanumeric
                for (int nc = 0; nc < PasswordSettings.NumNonAlphanumericChars; nc++)
                {
                    Rule += "[\\W_]+.*";
                }
                Rule += ").";
                if (PasswordSettings.MinLength > 0)
                {
                    Rule += "{" + PasswordSettings.MinLength + ",}";
                }
                else
                {
                    Rule += "*";
                }
                rules.Add(new ModelClientValidationRegexRule(ErrorMessage, Rule));
            }
            return(rules);
        }
Example #5
0
        public IEnumerable <ITreeNode> GetDocuments(string SinglePath, PathSelectionEnum PathType, string[] PageTypes = null, string OrderBy = null, string WhereCondition = null, int MaxLevel = -1, int TopNumber = -1, string[] Columns = null, bool IncludeCoupledColumns = false)
        {
            using (MultiDocumentQuery Query = new MultiDocumentQuery())
            {
                if (PageTypes != null && PageTypes.Length > 0)
                {
                    if (PageTypes.Length == 1)
                    {
                        Query.Type(PageTypes[0]);
                    }
                    else
                    {
                        Query.Types(PageTypes);
                    }
                }
                if (IncludeCoupledColumns)
                {
                    Query.ExpandColumns();
                }

                // Handle culture and versioning and site
                Query.Culture(cultureName)
                .CombineWithDefaultCulture()
                .CombineWithAnyCulture()
                .Published(!latestVersionEnabled)
                .LatestVersion(latestVersionEnabled)
                .OnSite(_SiteRepo.CurrentSiteName());

                PathTypeEnum KenticoPathType = PathTypeEnum.Explicit;
                switch (PathType)
                {
                case PathSelectionEnum.ChildrenOnly:
                    KenticoPathType = PathTypeEnum.Children;
                    break;

                case PathSelectionEnum.ParentAndChildren:
                    KenticoPathType = PathTypeEnum.Section;
                    break;

                case PathSelectionEnum.ParentOnly:
                    KenticoPathType = PathTypeEnum.Single;
                    break;
                }
                Query.Path(SinglePath, KenticoPathType);

                if (!string.IsNullOrWhiteSpace(OrderBy))
                {
                    Query.OrderBy(OrderBy);
                }
                if (!string.IsNullOrWhiteSpace(WhereCondition))
                {
                    Query.Where(WhereCondition);
                }
                if (Columns != null && Columns.Length > 0)
                {
                    Query.Columns(Columns);
                }
                if (MaxLevel >= 0)
                {
                    Query.NestingLevel(MaxLevel);
                }
                if (TopNumber >= 0)
                {
                    Query.TopN(TopNumber);
                }
                return(Query.TypedResult);
            }
        }