2015-01-07 7 views
6

Я пытаюсь создать нового участника для моего сайта Umbraco программно, но я не уверен, что делаю это правильно.Создание нового члена программно в Umbraco

Мой код выглядит следующим образом:

MemberType demoMemberType = new MemberType(1040); //id of membertype ‘demo’ 
Member newMember = Member.MakeNew(newEmployee.FirstName + " " + newEmployee.LastName, demoMemberType, new umbraco.BusinessLogic.User(0)); 

newMember.Email = "[email protected]"; 
newMember.Password = "password"; 
newMember.LoginName = "Test"; 
newMember.getProperty("firstName").Value = "test"; 

newMember.Save(); 

Но когда я запускаю мой код, я не вижу ничего, появляясь в моем Umbraco. Может кто-нибудь, пожалуйста, скажите мне, что я сделал неправильно?

ответ

0

В зависимости от версии Umbraco указанный образец кода устарел.

Umbraco 4 изменил модель членства Umbraco использовать членство модель провайдера ASP.NET , а это означает, что все абстрактные классы, которые предоставляются Out-Of-The-Box с ASP.NET способны доступа к передающим Участник Umbraco. На MSDN (и других сайтах ) есть много хороших ресурсов для использования членства ASP.NET, предлагаемая начальная точка - .

Статьи:

http://our.umbraco.org/wiki/how-tos/membership-providers

http://msdn.microsoft.com/en-us/library/tw292whz.aspx

3

Субъект является довольно громоздки, но следующий пример кода для вашей модели и контроллера, который должен поставить вас на правильном пути. Надеюсь, вы знаете достаточно о MVC, чтобы добиться этого.

Ваша модель может содержать что-то вроде следующего и заполняться с входом с вашей точки зрения

using System.ComponentModel.DataAnnotations; 
    using System.Web; 

    namespace MyProject.Models 
    { 
     public class MemberModel 
     { 

      [Required] 
      public string Name { get; set; } 

      [Required] 
      [EmailAddress] 
      public string Email { get; set; } 

      [Required] 
      public string Password { get; set; } 
     } 
} 

Ваш контроллер может быть что-то вроде следующего:

using System.Web.Mvc; 
using MyProject.Models; 
using Umbraco.Web.Mvc; 

namespace MyProject.Controllers 
{ 
    public class MemberController : SurfaceController 
    { 
     public ActionResult SignUp(MemberModel model) 
     { 
      if (!ModelState.IsValid) 
       return CurrentUmbracoPage(); 

      var memberService = Services.MemberService; 
      if (memberService.GetByEmail(model.Email) != null) 
      { 
       ModelState.AddModelError("", "Member already exists"); 
       return CurrentUmbracoPage(); 
      } 
      var member = memberService.CreateMemberWithIdentity(model.Email, model.Email, model.Name, "MyMemberType"); 

      memberService.Save(member); 

      memberService.SavePassword(member,model.Password); 

      Members.Login(model.Email, model.Password); 

      return Redirect("/"); 
     } 
    } 
} 
9

Если вы используете Umbraco 7 лучше всего использовать службу участника. Ниже приведен простой подход, который вы могли бы использовать для достижения этого.

public int RegisterMember(string memberName, string emailAddress, string memberPassword, string memberTypeAlias, string memberGroupName) 
{ 
     int umbracoMemberId = -1; 

     if (!MemberExists(emailAddress)) 
     { 
      IMember newMember = ApplicationContext.Current.Services.MemberService.CreateMember(emailAddress, emailAddress, memberName, memberTypeAlias); 

      try 
      { 
       ApplicationContext.Current.Services.MemberService.Save(newMember); 
       ApplicationContext.Current.Services.MemberService.SavePassword(newMember, memberPassword); 
       ApplicationContext.Current.Services.MemberService.AssignRole(newMember.Id, memberGroupName); 
       umbracoMemberId = newMember.Id; 
      } 
      catch (Exception ex) 
      { 
       throw new Exception("Unable to create new member " + ex.Message); 
      } 
     } 

     return umbracoMemberId; 
} 


public bool MemberExists(string emailAddress) 
{ 
     return (ApplicationContext.Current.Services.MemberService.GetByEmail(emailAddress) != null); 
} 
Смежные вопросы