Exemplo n.º 1
0
        public async Task <ActionResult> Register(RegistrationUser ru)
        {
            if (ModelState.IsValid)
            {
                MembershipUser mu = Membership.CreateUser(ru.UserName, ru.Password, ru.EmailAddress, "{IGNORE}", "{IGNORE}", false, out MembershipCreateStatus status);

                switch (status)
                {
                case MembershipCreateStatus.Success:
                {
                    Roles.AddUserToRole(mu.UserName, "Users");

                    MongoMembershipProvider provider = (MongoMembershipProvider)Membership.Provider;
                    Guid   id   = (Guid)mu.ProviderUserKey;
                    string hash = (await provider.GenerateValidationHash(id)).ToLower();

                    string fullUrl = Request.Url?.GetLeftPart(UriPartial.Authority) + Url.Action("Validate",
                                                                                                 "Account",
                                                                                                 new
                        {
                            id,
                            hash
                        });
                    await EmailManager.SendRegistrationEmail(mu, fullUrl);

                    return(RedirectToAction(nameof(RegisterThanks)));
                }

                case MembershipCreateStatus.InvalidPassword:
                    ViewData["ErrorMessage"] = VariantTerms.Support_Error_InvalidPassword;
                    break;

                case MembershipCreateStatus.DuplicateEmail:
                    ViewData["ErrorMessage"] = VariantTerms.Support_Error_DuplicateEmail;
                    break;

                case MembershipCreateStatus.DuplicateUserName:
                    ViewData["ErrorMessage"] = VariantTerms.Support_Error_DuplicateUserName;
                    break;

                default:
                    ViewData["ErrorMessage"] = VariantTerms.Support_Error_UnknownError;
                    break;
                }
            }

            return(View(ru));
        }