public virtual ActionResult Register(NewMemberModel model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            var logData = new ExtendedLoggerData();

            logData.AddCategory("Merchello");
            logData.AddCategory("FastTrack");

            var registerModel = Members.CreateRegistrationModel(model.MemberTypeAlias);

            registerModel.Name            = model.Email;
            registerModel.Email           = model.Email;
            registerModel.Password        = model.Password;
            registerModel.Username        = model.Email;
            registerModel.UsernameIsEmail = true;

            var fn = new UmbracoProperty {
                Alias = "firstName", Name = "First Name", Value = model.FirstName
            };
            var ln = new UmbracoProperty {
                Alias = "lastName", Name = "Last Name", Value = model.LastName
            };

            registerModel.MemberProperties.Add(fn);
            registerModel.MemberProperties.Add(ln);

            MembershipCreateStatus status;

            //// Add a message for the attempt
            MultiLogHelper.Info <CustomerMembershipController>("Registering a new member", logData);

            var member = Members.RegisterMember(registerModel, out status, model.PersistLogin);


            var registration = NewMemberModelFactory.Create(model, status);

            if (registration.ViewData.Success)
            {
                var membership = _memberService.GetByEmail(model.Email);

                if (member != null)
                {
                    _memberService.AssignRole(membership.Id, "Customers");
                    _memberService.Save(membership);
                }

                return(model.SuccessRedirectUrl.IsNullOrWhiteSpace()
                           ? Redirect("/")
                           : Redirect(model.SuccessRedirectUrl));
            }
            else
            {
                ViewData["MerchelloViewData"] = model.ViewData;
                return(CurrentUmbracoPage());
            }
        }
예제 #2
0
        private IEnumerable <UmbracoProperty> GetMemberProperties(IMember member)
        {
            var builtIns = Umbraco.Core.Constants.Conventions.Member.GetStandardPropertyTypeStubs()
                           .Select(x => x.Key).ToArray();

            var memberType = _memberTypeService.Get(member.ContentTypeId);

            var viewProperties = new List <UmbracoProperty>();

            foreach (var prop in memberType.PropertyTypes.Where(x => builtIns.Contains(x.Alias) == false))
            {
                var value = string.Empty;

                var propValue = member.Properties[prop.Alias];
                if (propValue != null && propValue.GetValue() != null)
                {
                    value = propValue.GetValue().ToString();
                }

                var viewProperty = new UmbracoProperty
                {
                    Alias = prop.Alias,
                    Name  = prop.Name,
                    Value = value
                };

                viewProperties.Add(viewProperty);
            }
            return(viewProperties);
        }
        /// <summary>
        /// Construct the lucene query to feed to the highlighter
        /// </summary>
        /// <param name="UmbracoProperty"></param>
        /// <param name="SearchTerms"></param>
        /// <returns></returns>
        protected string QueryHighlight(UmbracoProperty UmbracoProperty, List <string> SearchTerms)
        {
            var query = new StringBuilder();

            foreach (var term in SearchTerms)
            {
                var fuzzyString = string.Empty;
                if (!term.Contains('"'))
                {
                    // wildcard queries get lower relevance than exact matches, and ignore fuzzieness
                    if (UmbracoProperty.Wildcard)
                    {
                        query.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "{0}*^{1} ", term, 0.5);
                    }
                    else
                    {
                        var fuzzyLocal = UmbracoProperty.FuzzyMultiplier;
                        if (fuzzyLocal < 1.0 && fuzzyLocal > 0.0)
                        {
                            fuzzyString = "~" + fuzzyLocal;
                        }
                    }
                }
                query.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "{0}{1} ", term, fuzzyString);
            }
            return(query.ToString());
        }
예제 #4
0
        private IEnumerable <UmbracoProperty> GetMemberPropertiesViewModel(IMemberType memberType, IEnumerable <string> builtIns, IMember member = null)
        {
            var viewProperties = new List <UmbracoProperty>();

            foreach (var prop in memberType.PropertyTypes
                     .Where(x => builtIns.Contains(x.Alias) == false && memberType.MemberCanEditProperty(x.Alias))
                     .OrderBy(p => p.SortOrder))
            {
                var value = string.Empty;
                if (member != null)
                {
                    var propValue = member.Properties[prop.Alias];
                    if (propValue != null && propValue.GetValue() != null)
                    {
                        value = propValue.GetValue().ToString();
                    }
                }

                var viewProperty = new UmbracoProperty
                {
                    Alias = prop.Alias,
                    Name  = prop.Name,
                    Value = value
                };

                // TODO: Perhaps one day we'll ship with our own EditorTempates but for now developers
                // can just render their own.

                ////This is a rudimentary check to see what data template we should render
                //// if developers want to change the template they can do so dynamically in their views or controllers
                //// for a given property.
                ////These are the default built-in MVC template types: “Boolean”, “Decimal”, “EmailAddress”, “HiddenInput”, “HTML”, “Object”, “String”, “Text”, and “Url”
                //// by default we'll render a text box since we've defined that metadata on the UmbracoProperty.Value property directly.
                //if (prop.DataTypeId == new Guid(Constants.PropertyEditors.TrueFalse))
                //{
                //    viewProperty.EditorTemplate = "UmbracoBoolean";
                //}
                //else
                //{
                //    switch (prop.DataTypeDatabaseType)
                //    {
                //        case DataTypeDatabaseType.Integer:
                //            viewProperty.EditorTemplate = "Decimal";
                //            break;
                //        case DataTypeDatabaseType.Ntext:
                //            viewProperty.EditorTemplate = "Text";
                //            break;
                //        case DataTypeDatabaseType.Date:
                //        case DataTypeDatabaseType.Nvarchar:
                //            break;
                //    }
                //}

                viewProperties.Add(viewProperty);
            }
            return(viewProperties);
        }
예제 #5
0
        public IHttpActionResult AddUser([FromBody] NewUser model)
        {
            if (!ModelState.IsValid)
            {
                return(NotValid());
            }

            var registerModel = Members.CreateRegistrationModel("customer");

            registerModel.Name            = $"{model.FirstName} {model.LastName}".Trim();
            registerModel.Email           = model.Email;
            registerModel.Password        = model.Password;
            registerModel.Username        = model.Email;
            registerModel.UsernameIsEmail = true;

            var fn = new UmbracoProperty {
                Alias = "firstName", Name = "First Name", Value = model.FirstName.Trim()
            };
            var ln = new UmbracoProperty {
                Alias = "lastName", Name = "Last Name", Value = model.LastName.Trim()
            };

            registerModel.MemberProperties.Add(fn);
            registerModel.MemberProperties.Add(ln);

            Members.RegisterMember(registerModel, out MembershipCreateStatus status, true);

            switch (status)
            {
            case MembershipCreateStatus.DuplicateUserName:
            case MembershipCreateStatus.DuplicateEmail:
                return(BadRequest("Пользователь с таким email-адресом уже зарегистрирован."));

            case MembershipCreateStatus.InvalidPassword:
                return(BadRequest("Пароль слишком простой."));

            case MembershipCreateStatus.Success:
                var membership = ApplicationContext.Services.MemberService.GetByEmail(model.Email);
                ApplicationContext.Services.MemberService.AssignRole(membership.Id, "Customers");
                ApplicationContext.Services.MemberService.Save(membership);
                return(Created(string.Empty, new { id = membership.Id, name = membership.GetValue <string>("firstName") }));

            default:
                return(BadRequest("Произошла ошибка. Попробуйте снова"));
            }
        }
        /// <summary>
        /// highlight the search term in the supplied result
        /// </summary>
        /// <param name="Result"></param>
        /// <param name="UmbracoProperty"></param>
        /// <param name="Summary"></param>
        /// <returns></returns>
        protected bool LuceneHighlightField(SearchResult Result, UmbracoProperty UmbracoProperty, out string Summary)
        {
            Summary = string.Empty;
            var fieldName = UmbracoProperty.PropertyName;

            if (!string.IsNullOrEmpty(Result.Fields[fieldName]))
            {
                Highlighter highlighter;
                if (HighlighterCache.ContainsKey(fieldName))
                {
                    highlighter = HighlighterCache[fieldName];
                }
                else
                {
                    var searchTerms = SearchUtilities.GetSearchTermsSplit(Parameters.SearchTerm);
                    var luceneQuery = QueryHighlight(UmbracoProperty, searchTerms);
                    var parser      = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, fieldName, _analyzer);
                    // This is needed to make wildcards highlight correctly
                    if (UmbracoProperty.Wildcard)
                    {
                        parser.SetMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
                    }
                    var query = parser.Parse(luceneQuery);
                    query = query.Rewrite(_reader);
                    var scorer = new QueryScorer(query);
                    highlighter = new Highlighter(_formatter, scorer);
                    highlighter.SetTextFragmenter(new SimpleFragmenter(Parameters.SummaryLength));
                    HighlighterCache.Add(fieldName, highlighter);
                }
                using (var sr = new StringReader(Result.Fields[fieldName]))
                {
                    var tokenstream = _analyzer.TokenStream(fieldName, sr);
                    Summary = highlighter.GetBestFragment(tokenstream, Result.Fields[fieldName]);
                    if (!string.IsNullOrEmpty(Summary))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        private IEnumerable <UmbracoProperty> GetMemberProperties(IMember member)
        {
            var builtIns = ((Dictionary <string, PropertyType>)
                            typeof(Umbraco.Core.Constants.Conventions.Member).CallStaticMethod("GetStandardPropertyTypeStubs"))
                           .Select(x => x.Key).ToArray();

            var memberType = _memberTypeService.Get(member.ContentTypeAlias);

            if (memberType == null)
            {
                throw new NullReferenceException("No member type found with alias " + member.ContentTypeAlias);
            }

            var viewProperties = new List <UmbracoProperty>();

            foreach (var prop in memberType.PropertyTypes.Where(x => builtIns.Contains(x.Alias) == false))
            {
                var value = string.Empty;

                var propValue = member.Properties[prop.Alias];
                if (propValue != null && propValue.Value != null)
                {
                    value = propValue.Value.ToString();
                }

                var viewProperty = new UmbracoProperty
                {
                    Alias = prop.Alias,
                    Name  = prop.Name,
                    Value = value
                };

                viewProperties.Add(viewProperty);
            }
            return(viewProperties);
        }
예제 #8
0
        public virtual ActionResult Register(RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            var registerModel = Members.CreateRegistrationModel(model.MemberTypeAlias);

            registerModel.Name            = model.Email;
            registerModel.Email           = model.Email;
            registerModel.Password        = model.Password;
            registerModel.Username        = model.Email;
            registerModel.UsernameIsEmail = true;

            var fn = new UmbracoProperty {
                Alias = "firstName", Name = "First Name", Value = model.FirstName
            };
            var ln = new UmbracoProperty {
                Alias = "lastName", Name = "Last Name", Value = model.LastName
            };
            var pin = new UmbracoProperty {
                Alias = "pin", Name = "PIN", Value = model.Pin
            };

            registerModel.MemberProperties.Add(fn);
            registerModel.MemberProperties.Add(ln);
            registerModel.MemberProperties.Add(pin);

            MembershipCreateStatus status;

            var member = Members.RegisterMember(registerModel, out status, model.LogMemberIn);


            model = ValidateMembershipCreation(model, status);

            if (model.ViewData.Success)
            {
                var membership = _memberService.GetByEmail(model.Email);

                if (member != null)
                {
                    // Pages are protected at the Role Level (Member Groups).
                    _memberService.AssignRole(membership.Id, "Customers");
                    _memberService.Save(membership);

                    // Log them in
                    Members.Login(registerModel.Username, registerModel.Password);
                }

                var redirectUrl = model.SuccessRedirectUrl.IsNullOrWhiteSpace()
                    ? Redirect("~/")
                    : Redirect(model.SuccessRedirectUrl);

                return(redirectUrl);
            }

            // Fail.
            TempData["RegisterModel"] = model.ViewData;

            return(CurrentUmbracoPage());
        }