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]));
                }
            }
        }
Beispiel #2
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;
            }
        }