public async Task <IActionResult> SetEmailAddress(ChangeEmailAddressRequest request) { var userProfileId = Convert.ToInt32(User.FindFirst(ClaimTypes.Name)?.Value); var userProfile = await _userProfileReader.GetByUserProfileId(userProfileId); if (userProfile == null) { return(NotFound()); } var existingUserProfile = await _userProfileReader.GetByEmailAddress(request.EmailAddress); if (existingUserProfile != null && existingUserProfile.Id != userProfile.Id) { return(BadRequest("Email address already in use")); } // VALIDATE: Email Address Format // CONSIDER: Token Acceptance // VALIDATE: Not the current email address await _userProfileWriter.SetEmailAddress(userProfile.Id, request.EmailAddress); return(Ok()); }
public async Task <IActionResult> ChangeEmailAddressConfirmToken(ChangeEmailAddressRequest newEmail) { var accessToken = HttpContext.Request.Headers["Authorization"].ToString(); if (accessToken == null) { return(NotFound("Something is wrong with your authorization token")); } if (newEmail.Email == null) { return(NotFound("Enter valid email")); } ChangeEmailResult changeEmailResult = await _identityService.ChangeEmail(newEmail.Email, accessToken); if (changeEmailResult.Success) { string callback = changeEmailResult.Token; Email email = new Email(newEmail.Email, "Change email address confirmation", callback); await _emailEmmiter.SendChangeEmailEmail(email); return(Ok(new SimpleSuccessResponse { Success = true, Message = "Email change token was send to Your email" })); } else { if (changeEmailResult.Errors.Count() > 1) { return(BadRequest(new AuthenticationFailedResponse { Errors = changeEmailResult.Errors })); } else { return(BadRequest(changeEmailResult.Errors.ToList()[0])); } } }