public async Task <ActionResult> UpdatePhoneNumber([FromForm] UpdatePhoneNumberModel formModel)
        {
            TryValidateModel(formModel);
            if (!ModelState.IsValid)
            {
                return(View("customers/phone_number", WorkContext));
            }
            // Generate the token and send it
            var code = await _signInManager.UserManager.GenerateChangePhoneNumberTokenAsync(WorkContext.CurrentUser, formModel.PhoneNumber);

            var changePhoneNumberSmsNotification = new ChangePhoneNumberSmsNotification(WorkContext.CurrentStore.Id, WorkContext.CurrentLanguage)
            {
                Token     = code,
                Recipient = formModel.PhoneNumber,
            };

            var sendingResult = await SendNotificationAsync(changePhoneNumberSmsNotification);

            if (sendingResult.IsSuccess != true)
            {
                WorkContext.Form.Errors.Add(SecurityErrorDescriber.ErrorSendNotification(sendingResult.ErrorMessage));
                WorkContext.Form = Form.FromObject(formModel);
                return(View("customers/phone_number", WorkContext));
            }

            WorkContext.Form = Form.FromObject(new VerifyPhoneNumberModel {
                PhoneNumber = formModel.PhoneNumber
            });
            return(View("customers/verify_phone_number", WorkContext));
        }
Esempio n. 2
0
        public async Task <ApiResponse> UpdatePhoneNumber([FromBody] UpdatePhoneNumberModel model)
        {
            var response =
                await _mediator.Send(
                    Mapper.Map <UpdatePhoneNumberModel, UpdatePhoneNumberCommand>(model));

            if (response.IsSuccess)
            {
                return(ApiResponseHandler.GenerateResponse(response.Type, response.Data));
            }

            return(ApiResponseHandler.GenerateResponse(response.Type, null, ApiError.GenerateError(response)));
        }
Esempio n. 3
0
        public async Task <ActionResult <UpdatePhoneNumberResult> > UpdatePhoneNumber([FromBody] UpdatePhoneNumberModel model)
        {
            TryValidateModel(model);

            if (!ModelState.IsValid)
            {
                return(new UpdatePhoneNumberResult {
                    Succeeded = false, Error = "Phone number is not valid"
                });
            }

            var code = await _signInManager.UserManager.GenerateChangePhoneNumberTokenAsync(WorkContext.CurrentUser, model.PhoneNumber);

            var result = await _signInManager.UserManager.ChangePhoneNumberAsync(WorkContext.CurrentUser, model.PhoneNumber, code);

            await _signInManager.SignInAsync(WorkContext.CurrentUser, isPersistent : false);

            return(new UpdatePhoneNumberResult {
                Succeeded = result.Succeeded
            });
        }
        public async Task <ActionResult <UpdatePhoneNumberResult> > UpdatePhoneNumber([FromBody] UpdatePhoneNumberModel model)
        {
            var twoFactorAuthEnabled = await _signInManager.UserManager.GetTwoFactorEnabledAsync(WorkContext.CurrentUser);

            if (twoFactorAuthEnabled)
            {
                return(Forbid());
            }

            TryValidateModel(model);

            if (!ModelState.IsValid)
            {
                return(new UpdatePhoneNumberResult {
                    Succeeded = false, Error = "Phone number is not valid"
                });
            }

            var result = await _signInManager.UserManager.SetPhoneNumberAsync(WorkContext.CurrentUser, model.PhoneNumber);

            await _signInManager.SignInAsync(WorkContext.CurrentUser, isPersistent : false);

            return(new UpdatePhoneNumberResult {
                Succeeded = result.Succeeded
            });
        }