public virtual ActionResult Register(RegisterRequest request) { // If we have to render a view, we don't want Login to have us as a return URL // By having this value present in the dictionary BUT null, we don't put "returnUrl" on the Login link at all ViewData[Constants.ReturnUrlViewDataKey] = null; // TODO: consider client-side validation for unique username // TODO: add email validation if (!ModelState.IsValid) { return(View()); } User user; try { user = UserService.Create( request.Username, request.Password, request.EmailAddress); } catch (EntityException ex) { ModelState.AddModelError(String.Empty, ex.Message); return(View()); } if (Config.ConfirmEmailAddresses) { // Passing in scheme to force fully qualified URL var confirmationUrl = Url.ConfirmationUrl( MVC.Users.Confirm(), user.Username, user.EmailConfirmationToken, protocol: Request.Url.Scheme); if (Config.ConfirmationsViaAdminEmail) { MessageService.SendNewAdminApprovedAccountEmail(Config.AdminConfirmationEmail, user.Username, request.EmailAddress, confirmationUrl); } else { MessageService.SendNewAccountEmail(new MailAddress(request.EmailAddress, user.Username), confirmationUrl); } } return(RedirectToAction(MVC.Users.Thanks())); }
public virtual ActionResult ResendConfirmation(ResendConfirmationEmailViewModel model) { // We don't want Login to have us as a return URL // By having this value present in the dictionary BUT null, we don't put "returnUrl" on the Login link at all ViewData[Constants.ReturnUrlViewDataKey] = null; if (ModelState.IsValid) { var usersClaimingEmailAddress = UserService.FindByUnconfirmedEmailAddress(model.Email, model.Username); if (usersClaimingEmailAddress.Count == 1) { var user = usersClaimingEmailAddress.SingleOrDefault(); var confirmationUrl = Url.ConfirmationUrl( MVC.Users.Confirm(), user.Username, user.EmailConfirmationToken, protocol: Request.Url.Scheme); if (Config.ConfirmationsViaAdminEmail) { MessageService.SendNewAdminApprovedAccountEmail(Config.AdminConfirmationEmail, user.Username, user.UnconfirmedEmailAddress, confirmationUrl); } else { MessageService.SendNewAccountEmail(new MailAddress(user.UnconfirmedEmailAddress, user.Username), confirmationUrl); } return(RedirectToAction(MVC.Users.Thanks())); } else if (usersClaimingEmailAddress.Count > 1) { ModelState.AddModelError("Username", "Multiple users registered with your email address. Enter your username in order to resend confirmation email."); } else { ModelState.AddModelError("Email", "There was an issue resending your confirmation token."); } } return(View(model)); }