public async Task <AccountResponse> ChangeEmailAsync(User user, EmailChangeViewModel emailChangeViewModel) { if (user != null) { if (emailChangeViewModel.Email != null && emailChangeViewModel.ConfirmEmail != null) { if (emailChangeViewModel.Email.Equals(emailChangeViewModel.ConfirmEmail)) { var emailChangeToken = await userManager.GenerateChangeEmailTokenAsync(user, emailChangeViewModel.Email); var baseUrl = "http://localhost:44338/api/user/emailChangeConfirm"; string emailCallbackUrl = baseUrl + String.Format("/?userId={0}&email={1}&token={2}", user.Id, emailChangeViewModel.Email, emailChangeToken); string message = "Click on the link to confirm email change: " + emailCallbackUrl; await emailSender.SendEmailAsync(user.Email, "Email change link", message); return(new AccountResponse { ResponseStatus = Status.Success, Message = "The email change link was sent to your email" }); } return(new AccountResponse { ResponseStatus = Status.Error, Message = "Emails do not match" }); } return(new AccountResponse { ResponseStatus = Status.Error, Message = "Request is missing some data" }); } return(new AccountResponse { ResponseStatus = Status.Error, Message = "User not found" }); }
public ActionResult ChangeEmail(EmailChangeViewModel model) { if (ModelState.IsValid) { var user = _repositoryServices.GetUserByName(User.Identity.Name); user.Email = model.Email; _accountManagementServices.ChangeUserEmail(user); return(View("Success")); } return(View(model)); }
public async Task <IActionResult> RequestEmailChange([FromBody] EmailChangeViewModel emailChangeViewModel) { if (emailChangeViewModel != null) { var user = await userManager.GetUserAsync(HttpContext.User); AccountResponse response = await accountServices.ChangeEmailAsync(user, emailChangeViewModel); if (response.ResponseStatus == Status.Success) { return(Ok(response.Message)); } else { return(StatusCode(StatusCodes.Status400BadRequest, response.Message)); } } return(StatusCode(StatusCodes.Status400BadRequest)); }