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])); } } }
private async void Save() { this.WarningText = string.Empty; this.NewEmailInputState = InputState.Normal; if (!ValidationService.IsValidEmail(this.NewEmail)) { this.WarningText = ResourceService.AppMessages.GetString("AM_IncorrectEmailFormat"); this.NewEmailInputState = InputState.Warning; return; } this.IsBusy = true; this.ControlState = false; ChangeEmailResult result = ChangeEmailResult.Unknown; var changeEmail = new ChangeEmailRequestListenerAsync(); var mfaStatus = await AccountService.CheckMultiFactorAuthStatusAsync(); if (mfaStatus == MultiFactorAuthStatus.Enabled) { this.OnHideDialog(); await DialogService.ShowAsyncMultiFactorAuthCodeInputDialogAsync(async (string code) => { result = await changeEmail.ExecuteAsync(() => { SdkService.MegaSdk.multiFactorAuthChangeEmail( this.NewEmail, code, changeEmail); }); if (result == ChangeEmailResult.MultiFactorAuthInvalidCode) { DialogService.SetMultiFactorAuthCodeInputDialogWarningMessage(); return(false); } return(true); }); this.OnShowDialog(); } else { result = await changeEmail.ExecuteAsync(() => SdkService.MegaSdk.changeEmail(this.NewEmail, changeEmail)); } this.IsBusy = false; this.ControlState = true; switch (result) { case ChangeEmailResult.Success: this.OnHideDialog(); DialogService.ShowAwaitEmailConfirmationDialog(this.NewEmail); break; case ChangeEmailResult.AlreadyRequested: this.WarningText = ResourceService.AppMessages.GetString("AM_ChangeEmailAlreadyRequested"); break; case ChangeEmailResult.UserNotLoggedIn: this.WarningText = ResourceService.AppMessages.GetString("AM_UserNotOnline"); break; case ChangeEmailResult.MultiFactorAuthInvalidCode: case ChangeEmailResult.Unknown: this.WarningText = ResourceService.AppMessages.GetString("AM_ChangeEmailGenericError"); break; } }