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()); } }
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()); }
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); }
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); }
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()); }