Esempio n. 1
0
        public ActionResult HandleSignUp(CombinedRegisterLoginModel model)
        {
            // Model validation
            if (!ModelState.IsValid)
            {
                return(this.CurrentUmbracoPage());
            }

            var registerModel = Members.CreateRegistrationModel(model.Registration.MemberTypeName.DecryptWithMachineKey());

            registerModel.Name     = model.Registration.EmailAddress;
            registerModel.Email    = model.Registration.EmailAddress;
            registerModel.Password = model.Registration.Password;
            registerModel.Username = model.Registration.EmailAddress;
            registerModel.CreatePersistentLoginCookie = model.Registration.PersistLogin;
            registerModel.UsernameIsEmail             = true;

            if (registerModel.MemberProperties.Exists(x => x.Alias == "firstName"))
            {
                registerModel.MemberProperties.Find(x => x.Alias == "firstName").Value = model.Registration.FirstName;
            }

            if (registerModel.MemberProperties.Exists(x => x.Alias == "lastName"))
            {
                registerModel.MemberProperties.Find(x => x.Alias == "lastName").Value = model.Registration.LastName;
            }

            MembershipCreateStatus status;
            var membershipUser = Members.RegisterMember(registerModel, out status);

            switch (status)
            {
            case MembershipCreateStatus.InvalidPassword:
                ModelState.AddModelError(string.Empty, "Invalid password");
                return(this.CurrentUmbracoPage());

            case MembershipCreateStatus.DuplicateEmail:
                ModelState.AddModelError(string.Empty, "The email address " + model.Registration.EmailAddress + " is already associated with a customer.");
                return(this.CurrentUmbracoPage());

            case MembershipCreateStatus.DuplicateUserName:
                ModelState.AddModelError(string.Empty, "The email address " + model.Registration.EmailAddress + " is already associated with a customer.");
                return(this.CurrentUmbracoPage());

            default:
                // TODO should not need to do this but need to ask for a better event in Umbraco
                // but have to resave to fire off the memberservice event to populate the Merchello customer
                // correctly
                var member = Services.MemberService.GetByEmail(model.Registration.EmailAddress);
                if (member != null)
                {
                    Services.MemberService.Save(member);
                    Services.MemberService.AssignRole(member.Id, "MerchelloCustomers");
                }

                break;
            }

            return(RedirectToUmbracoPage(model.AccountPageId));
        }
        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());
            }
        }
        public ActionResult Register(Models.RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }
            var registerModel = Members.CreateRegistrationModel("test");

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

            registerModel.MemberProperties.Add(new Umbraco.Web.Models.UmbracoProperty()
            {
                Alias = "interestedIn", Name = "interestedIn", Value = model.InterestedIn
            });

            // How we register the member
            Members.RegisterMember(registerModel, out System.Web.Security.MembershipCreateStatus status);

            if (status == System.Web.Security.MembershipCreateStatus.Success)
            {
                return(Redirect("/myAccount"));
            }
            else
            {
                TempData["error"] = status;
                return(CurrentUmbracoPage());
            }
        }
Esempio n. 4
0
        public ActionResult Register(RegistrationFormViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            var member = Members.CreateRegistrationModel();

            member.Name            = vm.Name;
            member.Email           = vm.Email;
            member.Password        = vm.Password;
            member.UsernameIsEmail = true;
            MembershipCreateStatus status;

            Members.RegisterMember(member, out status);
            if (!status.Equals(MembershipCreateStatus.Success))
            {
                return(CurrentUmbracoPage());
            }

            var email = new EmailDetail
            {
                To = new List <string> {
                    member.Email
                },
                Subject    = "Registraion confirmation",
                IsBodyHtml = false
            };

            _mailer.Send(email);

            return(RedirectToCurrentUmbracoPage());
        }
        private System.Web.Security.MembershipCreateStatus AddCustomerToUmbraco(CustomerSignupViewModel profileModel)
        {
            var model = Members.CreateRegistrationModel("Customer");

            model.Password = profileModel.Password;
            model.Name     = profileModel.Username;
            model.Username = profileModel.Username;
            model.Email    = profileModel.Email;

            var status = System.Web.Security.MembershipCreateStatus.ProviderError;

            Members.RegisterMember(model, out status, false);
            return(status);
        }
Esempio n. 6
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("Произошла ошибка. Попробуйте снова"));
            }
        }
Esempio n. 7
0
        public ActionResult RegisterMember(MembershipCMSModel model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            if (model != null)
            {
                MembershipCreateStatus result;
                RegisterModel          newModel = Members.CreateRegistrationModel();

                //Save the record
                //By default alias will be 'Member'
                newModel.Username        = model.UserName;
                newModel.UsernameIsEmail = false;
                newModel.Name            = model.UserName;
                newModel.Password        = model.Password;
                newModel.Email           = model.UserEmail;

                Members.RegisterMember(newModel, out result);

                var memberGroup = Services.MemberGroupService.GetByName(model.GROUP_ALIAS);
                var member      = Services.MemberService.GetByUsername(newModel.Username);

                member.SetValue(model.TYPE_PROPERTY_NAME, 360);

                /*member.SetValue("", model.ContactNo);
                *  member.SetValue("", model.countryValue);
                *  member.SetValue("", model.cityValue);*/
                Services.MemberService.Save(member);

                TempData["RegisterResult"] = result.ToString();

                //if (result == MembershipCreateStatus.Success)
                //    return RedirectToCurrentUmbracoPage();
            }
            else
            {
                TempData["RegisterResult"] = "Registration failed.";
                //Error should be logged properly
            }

            return(RedirectToCurrentUmbracoPage());
        }
Esempio n. 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());
        }
Esempio n. 9
0
        public override void Execute()
        {
            #line 8 "..\..\Views\CreateMember.cshtml"

            Html.EnableClientValidation();
            Html.EnableUnobtrusiveJavaScript();
            Html.RequiresJs("~/scripts/jquery.validate.min.js");
            Html.RequiresJs("~/scripts/jquery.validate.unobtrusive.min.js");

            var createMemberModel = Members.CreateRegistrationModel();


            #line default
            #line hidden
            WriteLiteral("\r\n<div");

            WriteLiteral(" class=\"container-xl\"");

            WriteLiteral(">\r\n    <h1>");


            #line 17 "..\..\Views\CreateMember.cshtml"
            Write(Model.Name);


            #line default
            #line hidden
            WriteLiteral("</h1>\r\n\r\n");


            #line 19 "..\..\Views\CreateMember.cshtml"


            #line default
            #line hidden

            #line 19 "..\..\Views\CreateMember.cshtml"
            if (User.Identity.IsAuthenticated)
            {
            #line default
            #line hidden

            #line 21 "..\..\Views\CreateMember.cshtml"
                Write(Html.Partial("_Logout"));


            #line default
            #line hidden

            #line 21 "..\..\Views\CreateMember.cshtml"
            }
            else
            {
                if (TempData["FormSuccess"] != null)
                {
            #line default
            #line hidden

            #line 27 "..\..\Views\CreateMember.cshtml"
                    Write(Html.ProtectEmailAddresses(Model.Value("memberCreatedSuccessfully").ToString(), TempData["Email"]?.ToString()));


            #line default
            #line hidden

            #line 27 "..\..\Views\CreateMember.cshtml"
                }
                else
                {
                    using (Html.BeginUmbracoForm <CreateMemberSurfaceController>("CreateMember"))
                    {
            #line default
            #line hidden

            #line 33 "..\..\Views\CreateMember.cshtml"
                        Write(Html.AntiForgeryToken());


            #line default
            #line hidden

            #line 33 "..\..\Views\CreateMember.cshtml"


                        if (ViewContext.ViewData.ModelState.Where(x => x.Key == string.Empty).Any())
                        {
            #line default
            #line hidden

            #line 37 "..\..\Views\CreateMember.cshtml"
                            Write(Html.ValidationSummary(true));


            #line default
            #line hidden

            #line 37 "..\..\Views\CreateMember.cshtml"
                        }



            #line default
            #line hidden
                        WriteLiteral("                <div");

                        WriteLiteral(" class=\"form-group\"");

                        WriteLiteral(">\r\n");

                        WriteLiteral("                    ");


            #line 41 "..\..\Views\CreateMember.cshtml"
                        Write(Html.LabelFor(m => createMemberModel.Name));


            #line default
            #line hidden
                        WriteLiteral("\r\n");

                        WriteLiteral("                    ");


            #line 42 "..\..\Views\CreateMember.cshtml"
                        Write(Html.TextBoxFor(m => createMemberModel.Name, new { @class = "form-control", required = "required", aria_describedby = "form-name", autocomplete = "name" }));


            #line default
            #line hidden
                        WriteLiteral("\r\n");

                        WriteLiteral("                    ");


            #line 43 "..\..\Views\CreateMember.cshtml"
                        Write(Html.ValidationMessageFor(m => createMemberModel.Name, null, new { id = "form-name" }));


            #line default
            #line hidden
                        WriteLiteral("\r\n                </div>\r\n");

                        WriteLiteral("                <div");

                        WriteLiteral(" class=\"form-group\"");

                        WriteLiteral(">\r\n");

                        WriteLiteral("                    ");


            #line 46 "..\..\Views\CreateMember.cshtml"
                        Write(Html.LabelFor(m => createMemberModel.Email));


            #line default
            #line hidden
                        WriteLiteral("\r\n");

                        WriteLiteral("                    ");


            #line 47 "..\..\Views\CreateMember.cshtml"
                        Write(Html.TextBoxFor(m => createMemberModel.Email, new { @class = "form-control", type = "email", required = "required", aria_describedby = "form-email", autocorrect = "off", autocapitalize = "off", autocomplete = "email" }));


            #line default
            #line hidden
                        WriteLiteral("\r\n");

                        WriteLiteral("                    ");


            #line 48 "..\..\Views\CreateMember.cshtml"
                        Write(Html.ValidationMessageFor(m => createMemberModel.Email, "Please enter a valid email address", new { id = "form-email" }));


            #line default
            #line hidden
                        WriteLiteral("\r\n                </div>\r\n");

                        WriteLiteral("                <div");

                        WriteLiteral(" class=\"form-group\"");

                        WriteLiteral(">\r\n");

                        WriteLiteral("                    ");


            #line 51 "..\..\Views\CreateMember.cshtml"
                        Write(Html.LabelFor(m => createMemberModel.Password));


            #line default
            #line hidden
                        WriteLiteral("\r\n");


            #line 52 "..\..\Views\CreateMember.cshtml"


            #line default
            #line hidden

            #line 52 "..\..\Views\CreateMember.cshtml"
                        var describedBy = "form-password";

            #line default
            #line hidden
                        WriteLiteral("\r\n");


            #line 53 "..\..\Views\CreateMember.cshtml"


            #line default
            #line hidden

            #line 53 "..\..\Views\CreateMember.cshtml"
                        if (!string.IsNullOrEmpty(Model.PasswordHelp))
                        {
                            describedBy = "form-password form-password-help";


            #line default
            #line hidden
                            WriteLiteral("                        <p");

                            WriteLiteral(" class=\"form-text\"");

                            WriteLiteral(" id=\"form-password-help\"");

                            WriteLiteral("><small>");


            #line 56 "..\..\Views\CreateMember.cshtml"
                            Write(Model.PasswordHelp);


            #line default
            #line hidden
                            WriteLiteral("</small></p>\r\n");


            #line 57 "..\..\Views\CreateMember.cshtml"
                        }


            #line default
            #line hidden
                        WriteLiteral("                    ");


            #line 58 "..\..\Views\CreateMember.cshtml"
                        Write(Html.PasswordFor(m => createMemberModel.Password, new { @class = "form-control", aria_describedby = describedBy, autocorrect = "off", autocapitalize = "off", autocomplete = "new-password" }));


            #line default
            #line hidden
                        WriteLiteral("\r\n");

                        WriteLiteral("                    ");


            #line 59 "..\..\Views\CreateMember.cshtml"
                        Write(Html.ValidationMessageFor(m => createMemberModel.Password, "Please create a new password", new { id = "form-password" }));


            #line default
            #line hidden
                        WriteLiteral("\r\n                </div>\r\n");


            #line 61 "..\..\Views\CreateMember.cshtml"


            #line default
            #line hidden

            #line 61 "..\..\Views\CreateMember.cshtml"
                        Write(Html.ProtectEmailAddresses(Model.Value("privacyNotice").ToString()));


            #line default
            #line hidden

            #line 61 "..\..\Views\CreateMember.cshtml"



            #line default
            #line hidden
                        WriteLiteral("                <button");

                        WriteLiteral(" class=\"btn btn-primary\"");

                        WriteLiteral(">");


            #line 63 "..\..\Views\CreateMember.cshtml"
                        Write(Model.Value("createMemberButton"));


            #line default
            #line hidden
                        WriteLiteral("</button>\r\n");


            #line 64 "..\..\Views\CreateMember.cshtml"
                    }
                }
            }


            #line default
            #line hidden
            WriteLiteral("</div>");
        }
Esempio n. 10
0
        public ActionResult HandleRegisterMember([Bind(Prefix = "registerModel")] RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            var firstName = model.MemberProperties.Find(x => x.Alias == "firstName").Value;
            var lastName  = model.MemberProperties.Find(x => x.Alias == "lastName").Value;

            model.Name = $"{firstName} {lastName}";

            MembershipCreateStatus status;
            var rm = Members.CreateRegistrationModel("MyUmbracoMember");

            rm.MemberProperties = model.MemberProperties;

            Members.RegisterMember(model, out status, model.LoginOnSuccess);
            switch (status)
            {
            case MembershipCreateStatus.Success:
                this.TempData["FormSuccess"] = (object)true;
                if (!model.RedirectUrl.IsNullOrWhiteSpace())
                {
                    return((ActionResult)this.Redirect(model.RedirectUrl));
                }
                return((ActionResult)this.RedirectToCurrentUmbracoPage());

            case MembershipCreateStatus.InvalidUserName:
                this.ModelState.AddModelError(model.UsernameIsEmail || model.Username == null ? "registerModel.Email" : "registerModel.Username", "Username is not valid");
                break;

            case MembershipCreateStatus.InvalidPassword:
                this.ModelState.AddModelError("registerModel.Password", "The password is not strong enough");
                break;

            case MembershipCreateStatus.InvalidQuestion:
            case MembershipCreateStatus.InvalidAnswer:
                throw new NotImplementedException(status.ToString());

            case MembershipCreateStatus.InvalidEmail:
                this.ModelState.AddModelError("registerModel.Email", "Email is invalid");
                break;

            case MembershipCreateStatus.DuplicateUserName:
                this.ModelState.AddModelError(model.UsernameIsEmail || model.Username == null ? "registerModel.Email" : "registerModel.Username", Umbraco.GetDictionaryValue("Validation.Email.InUse"));
                break;

            case MembershipCreateStatus.DuplicateEmail:
                this.ModelState.AddModelError("registerModel.Email", Umbraco.GetDictionaryValue("Validation.Email.InUse"));
                break;

            case MembershipCreateStatus.UserRejected:
            case MembershipCreateStatus.InvalidProviderUserKey:
            case MembershipCreateStatus.DuplicateProviderUserKey:
            case MembershipCreateStatus.ProviderError:
                this.ModelState.AddModelError("registerModel", "An error occurred creating the member: " + (object)status);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return((ActionResult)this.CurrentUmbracoPage());
        }
Esempio n. 11
0
        protected ActionResult InitiateSecurityUpgradeForIwsUser(string model, string username)
        {
            var hriUser = MakeInternalApiCallJson("GetRegisteredUserByUsername",
                                                  new Dictionary <string, string> {
                { "userName", username }
            });

            // Check if the user exists in IWS database
            if (hriUser == null || hriUser["RegId"] == null)
            {
                return(null);
            }

            // Before attempt to create a user need to check the email and login uniqueness
            var existedUserWithEmail = Services.MemberService.GetByEmail(hriUser["EMail"].ToString());

            if (existedUserWithEmail != null)
            {
                ModelState.AddModelError(
                    model,
                    "We cannot log you in with this user name. The email address of the user name you entered is associated with another user name. Please enter a valid user name and try again or contact Member Services for assistance.");

                return(CurrentUmbracoPage());
            }

            // Create the registration model
            var registerModel = Members.CreateRegistrationModel();

            // Member Name
            registerModel.Name = hriUser["FirstName"] + " " + hriUser["LastName"];
            // Member Id
            registerModel.MemberProperties.First(p => p.Alias == "memberId").Value = hriUser["RegId"].ToString();
            // User Name
            registerModel.Username = hriUser["UserName"].ToString();
            // First Name
            registerModel.MemberProperties.First(p => p.Alias == "firstName").Value = hriUser["FirstName"].ToString();
            // Last Name
            registerModel.MemberProperties.First(p => p.Alias == "lastName").Value = hriUser["LastName"].ToString();
            // SSN
            if ((string)hriUser["Ssn"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "ssn").Value = hriUser["Ssn"].ToString();
            }
            // SSN
            if ((string)hriUser["EbixId"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "ebixId").Value = hriUser["ebixID"].ToString();
            }
            // Email
            if ((string)hriUser["EMail"] != null)
            {
                registerModel.Email = hriUser["EMail"].ToString();
            }
            // Zip Code
            if ((string)hriUser["ZipCode"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "zipCode").Value = hriUser["ZipCode"].ToString();
            }
            // Phone Number
            if ((string)hriUser["PhoneNumber"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "phoneNumber").Value =
                    hriUser["PhoneNumber"].ToString();
            }
            // Y Number
            if ((string)hriUser["MemberId"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "yNumber").Value = hriUser["MemberId"].ToString();
            }
            // Group Id
            if ((string)hriUser["RxGrpId"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "groupId").Value = hriUser["RxGrpId"].ToString();
            }
            // Birthday
            if ((string)hriUser["DOB"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "birthday").Value = hriUser["DOB"].ToString();
            }
            // Plan Id
            if ((string)hriUser["PlanId"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "healthplanid").Value = hriUser["PlanId"].ToString();
            }
            // Plan Name
            if ((string)hriUser["PlanName"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "healthPlanName").Value = hriUser["PlanName"].ToString();
            }
            // Morneau Shepell First Name
            if ((string)hriUser["MSFirstName"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "msFirstName").Value = hriUser["MSFirstName"].ToString();
            }
            // Morneau Shepell Last Name
            if ((string)hriUser["MSLastName"] != null)
            {
                registerModel.MemberProperties.First(p => p.Alias == "msLastName").Value = hriUser["MSLastName"].ToString();
            }

            registerModel.MemberProperties.First(p => p.Alias == "market").Value        = hriUser["Market"].ToString();
            registerModel.MemberProperties.First(p => p.Alias == "effectiveYear").Value = hriUser["PlanEffectiveDate"].ToString();

            registerModel.Password        = Membership.GeneratePassword(12, 4);
            registerModel.LoginOnSuccess  = false;
            registerModel.UsernameIsEmail = false;

            // Register the user with automatically
            MembershipCreateStatus status;

            Members.RegisterMember(registerModel, out status, registerModel.LoginOnSuccess);



            if ((string)hriUser["DOB"] != null)
            {
                logger.Info("Adding role for '" + username + "'");
                logger.Info(hriUser);
                Roles.AddUserToRole(username, "Enrolled");
            }

            // Force sign out (hack for Umbraco bug that automatically logs user in on registration
            Session.Clear();
            FormsAuthentication.SignOut();

            return(SendResetPasswordEmailAndRedirectToSecurityUpgradePage(username));
        }
        public ActionResult Register(RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            var home = CurrentPage.Site();

            var registrationModel = Members.CreateRegistrationModel();

            registrationModel.Name            = string.Format("{0} {1}", model.FirstName, model.Surname);
            registrationModel.Email           = model.Email;
            registrationModel.Username        = model.Username;
            registrationModel.UsernameIsEmail = false;
            registrationModel.Password        = model.Password;
            registrationModel.LoginOnSuccess  = false;

            registrationModel.MemberProperties = new List <UmbracoProperty>
            {
                new UmbracoProperty {
                    Alias = "firstName", Value = model.FirstName
                },
                new UmbracoProperty {
                    Alias = "surname", Value = model.Surname
                }
            };

            MembershipCreateStatus status;
            var member = Members.RegisterMember(
                registrationModel,
                out status,
                registrationModel.LoginOnSuccess);

            switch (status)
            {
            case MembershipCreateStatus.Success:
                SendConfirmationEmail(member.Email);
                Alert("success", "Registration successful - please confirm your email address to sign in.");
                return(RedirectToCurrentUmbracoPage());

            case MembershipCreateStatus.InvalidUserName:
                ModelState.AddModelError("Username", "Invalid username.");
                break;

            case MembershipCreateStatus.InvalidPassword:
                ModelState.AddModelError("Password", "Invalid password.");
                break;

            case MembershipCreateStatus.InvalidQuestion:
            case MembershipCreateStatus.InvalidAnswer:
                throw new NotImplementedException(status.ToString());

            case MembershipCreateStatus.InvalidEmail:
                ModelState.AddModelError("Username", "Invalid email.");
                break;

            case MembershipCreateStatus.DuplicateUserName:
                ModelState.AddModelError("Username", "A member with this username already exists.");
                break;

            case MembershipCreateStatus.DuplicateEmail:
                ModelState.AddModelError("Email", "A member with this email already exists.");
                break;

            case MembershipCreateStatus.UserRejected:
            case MembershipCreateStatus.InvalidProviderUserKey:
            case MembershipCreateStatus.DuplicateProviderUserKey:
            case MembershipCreateStatus.ProviderError:
                Alert("danger", string.Format("An error occurred: {0}", status));
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(CurrentUmbracoPage());
        }