public async Task <IActionResult> Register(InputModels.RegisterInput input) { if (ModelState.IsValid) { var serviceResponse = await AccountRepository.Register(input); return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback)); } return(await FailureCallback()); async Task <IActionResult> FailureCallback() { await AccountRepository.SignOut(); var viewModel = new ViewModels.Account.RegisterPage { BirthdayDays = DayPickList(), BirthdayDay = input.BirthdayDay.ToString(), BirthdayMonths = MonthPickList(), BirthdayMonth = input.BirthdayMonth.ToString(), BirthdayYears = YearPickList(), BirthdayYear = input.BirthdayYear.ToString(), DisplayName = input.DisplayName, Email = input.Email, ConfirmEmail = input.ConfirmEmail, Password = input.Password, ConfirmPassword = input.ConfirmPassword, }; return(ForumViewResult.ViewResult(this, viewModel)); } }
public async Task <ServiceModels.ServiceResponse> Register(InputModels.RegisterInput input) { var serviceResponse = new ServiceModels.ServiceResponse(); var birthday = new DateTime(input.BirthdayYear, input.BirthdayMonth, input.BirthdayDay); var user = new DataModels.ApplicationUser { DisplayName = input.DisplayName, Registered = DateTime.Now, LastOnline = DateTime.Now, UserName = input.Email, Email = input.Email, Birthday = birthday }; var identityResult = await UserManager.CreateAsync(user, input.Password); if (identityResult.Succeeded) { Log.LogInformation($"User created a new account with password '{input.Email}'."); var code = await UserManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = EmailConfirmationLink(user.Id, code); if (!EmailSender.Ready) { serviceResponse.RedirectPath = callbackUrl; return(serviceResponse); } await EmailSender.SendEmailConfirmationAsync(input.Email, callbackUrl); } else { foreach (var error in identityResult.Errors) { Log.LogError($"Error registering '{input.Email}'. Message: {error.Description}"); serviceResponse.Error(error.Description); } } return(serviceResponse); }
public async Task <IActionResult> Register(InputModels.RegisterInput input) { if (ModelState.IsValid) { var serviceResponse = await AccountRepository.Register(input); return(await this.RedirectFromService(serviceResponse, FailureCallback)); } return(await FailureCallback()); async Task <IActionResult> FailureCallback() { await AccountRepository.SignOut(); var viewModel = new ViewModels.Account.RegisterPage { DisplayName = input.DisplayName, Email = input.Email, Password = input.Password, }; return(View(viewModel)); } }
public async Task <ServiceModels.ServiceResponse> Register(InputModels.RegisterInput input) { var serviceResponse = new ServiceModels.ServiceResponse(); if (!input.ConfirmThirteen) { var message = $"You must be 13 or older to register."; serviceResponse.Error(nameof(input.ConfirmThirteen), message); Log.LogWarning(message); } if ((await Records()).Any(r => r.DisplayName == input.DisplayName)) { var message = $"The display name '{input.DisplayName}' is already taken."; serviceResponse.Error(nameof(input.DisplayName), message); Log.LogWarning(message); } if (serviceResponse.Success) { var user = new DataModels.ApplicationUser { DisplayName = input.DisplayName, Registered = DateTime.Now, Birthday = DateTime.Now, LastOnline = DateTime.Now, UserName = input.Email, Email = input.Email }; var identityResult = await UserManager.CreateAsync(user, input.Password); if (identityResult.Succeeded) { var code = await UserManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = EmailConfirmationLink(user.Id, code); if (EmailSender.Ready) { await EmailSender.SendEmailConfirmationAsync(input.Email, callbackUrl); } var loginInput = new InputModels.LoginInput { Email = input.Email, Password = input.Password }; return(await Login(loginInput)); } else { foreach (var error in identityResult.Errors) { Log.LogError($"Error registering '{input.Email}'. Message: {error.Description}"); serviceResponse.Error(error.Description); } } } return(serviceResponse); }