Files
Umbraco-CMS/src/Umbraco.Web/Controllers/UmbRegisterController.cs

84 lines
3.7 KiB
C#
Raw Normal View History

using System;
using System.Linq;
2013-11-07 17:16:22 +01:00
using System.Web.Mvc;
using System.Web.Security;
2013-11-07 17:16:22 +01:00
using umbraco.BusinessLogic;
using umbraco.cms.businesslogic.member;
using Umbraco.Core;
using Umbraco.Core.Security;
2013-11-07 17:16:22 +01:00
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
namespace Umbraco.Web.Controllers
{
public class UmbRegisterController : SurfaceController
{
[HttpPost]
public ActionResult HandleRegisterMember([Bind(Prefix = "registerModel")]RegisterModel model)
{
if (ModelState.IsValid == false)
2013-11-07 17:16:22 +01:00
{
return CurrentUmbracoPage();
2013-11-07 17:16:22 +01:00
}
MembershipCreateStatus status;
var member = Members.RegisterMember(model, out status, model.LoginOnSuccess);
2013-11-07 17:16:22 +01:00
// Save the password
var memberService = Services.MemberService;
var m = memberService.GetByUsername(member.UserName);
memberService.SavePassword(m, model.Password);
switch (status)
2013-11-07 17:16:22 +01:00
{
case MembershipCreateStatus.Success:
//if there is a specified path to redirect to then use it
if (model.RedirectUrl.IsNullOrWhiteSpace() == false)
{
return Redirect(model.RedirectUrl);
}
//redirect to current page by default
TempData["FormSuccess"] = true;
return RedirectToCurrentUmbracoPage();
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(status.ToString());
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:
//don't add a field level error, just model level
ModelState.AddModelError("registerModel", "An error occurred creating the member: " + status);
break;
default:
throw new ArgumentOutOfRangeException();
2013-11-07 17:16:22 +01:00
}
return CurrentUmbracoPage();
2013-11-07 17:16:22 +01:00
}
2013-11-07 17:16:22 +01:00
}
}