public async Task <IActionResult> UpdateEmail(ChangeEmailInput input) { // This says, "look, I don't care how it's done. Here's the input, go figure it out. // Let me know how it went... await changeEmail.ExecuteAsync(input); // Note: // We're obviously lacking some exception handling. // I'll let you deal with that. It's outside the scope of what // I'm trying to accomplish. return(Ok()); }
public async Task <IActionResult> ChangeEmail([FromBody] ChangeEmailInput emailInput) { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } if (!ModelState.IsValid) { return(Ok(ModelState)); } var email = await _userManager.GetEmailAsync(user); if (emailInput.NewEmail != email) { var userId = await _userManager.GetUserIdAsync(user); var code = await _userManager.GenerateChangeEmailTokenAsync(user, emailInput.NewEmail); var callbackUrl = $"/api/Account/ConfirmEmailChange?userId={userId}&email={emailInput.NewEmail}&code={code}"; await _emailSender.SendEmailAsync( emailInput.NewEmail, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); return(Ok(new StatusResponse() { Status = "Confirmation link to change email sent. Please check your email." })); } return(Ok(new StatusResponse() { Status = "Your email is unchanged." })); }
public async Task <IActionResult> UpdateEmail(ChangeEmailInput input) { await dispatcher.DispatchAsync(new ChangeEmailCommand(input.OldEmail, input.NewEmail)); return(Ok()); }