diff --git a/src/Umbraco.Web/Controllers/LoginController.cs b/src/Umbraco.Web/Controllers/LoginController.cs index 563d15a281..67097ee60a 100644 --- a/src/Umbraco.Web/Controllers/LoginController.cs +++ b/src/Umbraco.Web/Controllers/LoginController.cs @@ -20,7 +20,7 @@ namespace Umbraco.Web.Controllers //Validate credentials if (Membership.ValidateUser(model.Username, model.Password) == false) { - ModelState.AddModelError("Username", "Invalid username or password"); + ModelState.AddModelError("loginModel.Username", "Invalid username or password"); return CurrentUmbracoPage(); } //Set member online diff --git a/src/Umbraco.Web/Controllers/RegisterController.cs b/src/Umbraco.Web/Controllers/RegisterController.cs index b19395db18..8bee168993 100644 --- a/src/Umbraco.Web/Controllers/RegisterController.cs +++ b/src/Umbraco.Web/Controllers/RegisterController.cs @@ -1,5 +1,7 @@ -using System.Linq; +using System; +using System.Linq; using System.Web.Mvc; +using System.Web.Security; using umbraco.BusinessLogic; using umbraco.cms.businesslogic.member; using Umbraco.Web.Models; @@ -12,73 +14,77 @@ namespace Umbraco.Web.Controllers [HttpPost] public ActionResult HandleRegisterMember([Bind(Prefix = "registerModel")]RegisterModel model) { - //TODO: Use new Member API and use the MemberShipProvider variables for validating password strength etc - if (ModelState.IsValid) + if (ModelState.IsValid == false) { - model.Username = (model.UsernameIsEmail || model.Username == null) ? model.Email : model.Username; + return CurrentUmbracoPage(); + } - var member = Member.GetMemberFromLoginName(model.Username); - if (member != null) - { - ModelState.AddModelError((model.UsernameIsEmail || model.Username == null) - ? "registerModel.Email" - : "registerModel.Username", - "A member with this username already exists."); + model.Username = (model.UsernameIsEmail || model.Username == null) ? model.Email : model.Username; - return CurrentUmbracoPage(); - } + MembershipCreateStatus status; + var member = Membership.CreateUser(model.Username, model.Password, model.Email, + //TODO: Support q/a http://issues.umbraco.org/issue/U4-3213 + "", "", + true, out status); - member = Member.GetMemberFromEmail(model.Email); - if (member != null) - { - ModelState.AddModelError("registerModel.Email", "A member with this e-mail address already exists."); + switch (status) + { + case MembershipCreateStatus.Success: - return CurrentUmbracoPage(); - } + //Set member online + Membership.GetUser(model.Username, true); + //Log them in + FormsAuthentication.SetAuthCookie(member.UserName, true); - member = CreateNewMember(model); + if (model.RedirectOnSucces) + { + return Redirect(model.RedirectUrl); + } - // Log member in - Member.AddMemberToCache(member); + TempData.Add("FormSuccess", true); + return RedirectToCurrentUmbracoPage(); - if (model.RedirectOnSucces) - { - return Redirect(model.RedirectUrl); - } - - TempData.Add("FormSuccess", true); - return RedirectToCurrentUmbracoPage(); + break; + case MembershipCreateStatus.InvalidUserName: + ModelState.AddModelError((model.UsernameIsEmail || model.Username == null) + ? "registerModel.Email" + : "registerModel.Username", + "Username is not valid"); + break; + case MembershipCreateStatus.InvalidPassword: + ModelState.AddModelError("registerModel.Password", "The password is not strong enough"); + break; + case MembershipCreateStatus.InvalidQuestion: + case MembershipCreateStatus.InvalidAnswer: + //TODO: Support q/a http://issues.umbraco.org/issue/U4-3213 + throw new NotImplementedException(); + case MembershipCreateStatus.InvalidEmail: + ModelState.AddModelError("registerModel.Email", "Email is invalid"); + break; + case MembershipCreateStatus.DuplicateUserName: + ModelState.AddModelError((model.UsernameIsEmail || model.Username == null) + ? "registerModel.Email" + : "registerModel.Username", + "A member with this username already exists."); + break; + case MembershipCreateStatus.DuplicateEmail: + ModelState.AddModelError("registerModel.Email", "A member with this e-mail address already exists"); + break; + case MembershipCreateStatus.UserRejected: + case MembershipCreateStatus.InvalidProviderUserKey: + case MembershipCreateStatus.DuplicateProviderUserKey: + case MembershipCreateStatus.ProviderError: + ModelState.AddModelError((model.UsernameIsEmail || model.Username == null) + ? "registerModel.Email" + : "registerModel.Username", + "An error occurred creating the member: " + status); + break; + default: + throw new ArgumentOutOfRangeException(); } return CurrentUmbracoPage(); } - private static Member CreateNewMember(RegisterModel model) - { - var user = new User(0); - - var mt = MemberType.GetByAlias(model.MemberTypeAlias) ?? MemberType.MakeNew(user, model.MemberTypeAlias); - - var member = Member.MakeNew(model.Username, mt, user); - - if (model.Name != null) - { - member.Text = model.Name; - } - - member.Email = model.Email; - member.Password = model.Password; - - if (model.MemberProperties != null) - { - foreach (var property in model.MemberProperties.Where(p => p.Value != null)) - { - member.getProperty(property.Alias).Value = property.Value; - } - } - - member.Save(); - return member; - } } }