public async Task <CreateLoginResult> Create(CreateLoginModel model) { var validationResult = ValidateCreateModel(model); if (validationResult != null) { return(validationResult); } if (!await _identityProvider.VerifyUserExists(model.Email)) { return(await CreateNewUser(model)); } if (await _identityProvider.VerifyUserEmailConfirmed(model.Email)) { return(new CreateLoginResult { Message = "User already exists with this email address.", UserStatus = UserStatus.AlreadyExists } .AddFailingField(x => x.Email)); } return(new CreateLoginResult { Message = "A user already exists with this email address, but email address has not been confirmed.\n\n" + "Use the link below to send the confirmation link again.", UserStatus = UserStatus.NeedsEmailConfirmation } .AddFailingField(x => x.Email)); }
private async Task <CreateLoginResult> CreateNewUser(CreateLoginModel model) { var randomPassword = Guid.NewGuid().ToString(); randomPassword = randomPassword.Substring(0, 4).ToUpper() + randomPassword.Substring(4); try { bool success = await _identityProvider.CreateUser(model.Name, model.Email, randomPassword); string confirmationSecret = await _identityProvider.GenerateEmailConfirmationToken(model.Email); _clientAppRepository.SetDefaultVendorOnUserFromEmailAndName(model.Email, model.Name); _emailService.SendConfirmationEmail(model.Email, confirmationSecret); return(new CreateLoginResult { Success = true, UserStatus = UserStatus.Created }); } catch (Exception e) { _log.Error("CreateNewUser", e); var message = string.Format("An exception was thrown when attempting to create the user:\n{0}", e.Message) .Replace("\r\n", "\n") .Replace("\n", "<br/>"); return(CreateLoginResult.Fail.WithMessage(message)); } }
public CreateLoginResult Create(CreateLoginModel model) { var validationResult = ValidateCreateModel(model); if (validationResult != null) { return(validationResult); } if (!WebSecurity.UserExists(model.Email)) { return(CreateNewUser(model)); } if (WebSecurity.IsConfirmed(model.Email)) { return(new CreateLoginResult { Message = "User already exists with this email address.", UserStatus = UserStatus.AlreadyExists } .AddFailingField(x => x.Email)); } return(new CreateLoginResult { Message = "A user already exists with this email address, but email address has not been confirmed.\n\n" + "Use the link below to send the confirmation link again.", UserStatus = UserStatus.NeedsEmailConfirmation } .AddFailingField(x => x.Email)); }
public async Task <ActionResult> Create(CreateLoginModel model) { if (ModelState.IsValid) { var result = await _userAccountManager.Create(model); if (result.UserStatus == UserStatus.Created) { result.RedirectRoute = Url.Action("ActivationSent"); } return(Json(result)); } // Failed Model Validation Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(BuildJsonResponseFromModelState())); }
private CreateLoginResult ValidateCreateModel(CreateLoginModel model) { var failedRequiredField = ValidateRequired <CreateLoginResult, CreateLoginModel>(x => x.Email, model) ?? ValidateRequired <CreateLoginResult, CreateLoginModel>(x => x.Name, model); if (failedRequiredField != null) { failedRequiredField.UserStatus = UserStatus.Failed; return(failedRequiredField); } if (!model.Email.IsValidEmailAddress()) { return(CreateLoginResult .Fail .WithMessage(string.Format("'{0}' is not a valid email address", model.Email)) .AddFailingField(x => x.Email)); } return(null); }
private CreateLoginResult CreateNewUser(CreateLoginModel model) { var randomPassword = Guid.NewGuid() .ToString(); try { string confirmationSecret = WebSecurity.CreateUserAndAccount( model.Email, randomPassword, new { FullName = model.Name }, true); _clientAppRepository.SetDefaultVendorOnUserFromEmailAndName(model.Email, model.Name); _emailService.SendConfirmationEmail(model.Email, confirmationSecret); return(new CreateLoginResult { Success = true, UserStatus = UserStatus.Created }); } catch (Exception e) { _log.Error("CreateNewUser", e); var message = string.Format("An exception was thrown when attempting to create the user:\n{0}", e.Message) .Replace("\r\n", "\n") .Replace("\n", "<br/>"); return(CreateLoginResult.Fail.WithMessage(message)); } }