public async Task <IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { UserApp user = new UserApp() { Email = model.Email, UserName = model.Username, Country = model.Country }; user.Token = TokenGenerator.Generate(); var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await _signInManager.SignInAsync(user, false); AuthMessageSender sender = new AuthMessageSender(); string baseUrl = $"{this.Request.Scheme}://{this.Request.Host}/"; string url = baseUrl + "EmailConfirmed/" + user.Token; string message = EmailMessageGenerator.GenerateEmailConfirmMessage(url); sender.SendEmailAsync(user.Email, "Please confirm your email", message); return(Redirect(baseUrl)); } else { foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } } return(View(model)); }
public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(model.Email); if (user == null) //|| !(await _userManager.IsEmailConfirmedAsync(user))) { return(View("ForgotPasswordConfirmation")); } var token = await _userManager.GeneratePasswordResetTokenAsync(user); AuthMessageSender authMessage = new AuthMessageSender(); string header = "Reset Password"; var callbackUrl = Url.Action("ResetPassword", "User", new { userId = user.Id, token = token }, protocol: HttpContext.Request.Scheme); string message = EmailMessageGenerator.GenerateResetPasswordMessage(callbackUrl); await authMessage.SendEmailAsync(model.Email, "Reset Password", message); return(View("ForgotPasswordConfirmation")); } return(View(model)); }