public async Task <ActionResult> start([FromBody] PhoneVerificationRequestModel verificationRequest)
        {
            HttpContext.Session.Set <PhoneVerificationRequestModel>("phone_verification_request", verificationRequest);

            if (ModelState.IsValid)
            {
                string result;
                if (verificationRequest.via == Verification.SMS)
                {
                    result = await authy.phoneVerificationRequestAsync(
                        verificationRequest.CountryCode,
                        verificationRequest.PhoneNumber
                        );
                }
                else
                {
                    result = await authy.phoneVerificationCallRequestAsync(
                        verificationRequest.CountryCode,
                        verificationRequest.PhoneNumber
                        );
                }
                return(Ok(result));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public async Task <ActionResult> Start(PhoneVerificationRequestModel verificationRequest)
        {
            string sessionStr = JsonConvert.SerializeObject(verificationRequest);

            HttpContext.Session.SetString(_2faVerificationModelSessionName, sessionStr);

            if (ModelState.IsValid)
            {
                string result;
                result = await authy.phoneVerificationRequestAsync(
                    verificationRequest.CountryCode,
                    verificationRequest.PhoneNumber
                    );

                return(RedirectToAction("Verification", "PhoneVerification"));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public async Task <JsonResult> StartRegisterBySendingVerificationRequest(PhoneVerificationRequestModel verificationRequest)
        {
            var response = new ResultModel();

            if (!ModelState.IsValid)
            {
                return(JsonModelStateErrors());
            }
            var validPhone = await _authy.ValidatePhoneAsync(verificationRequest.CountryCode, verificationRequest.PhoneNumber);

            if (!validPhone.IsSuccess)
            {
                return(Json(validPhone.ToBase()));
            }

            var isUsedPhoneCheck = await _authy.CheckIfPhoneIsUsedByAnotherUserAsync(validPhone.Result);

            if (!isUsedPhoneCheck.IsSuccess)
            {
                return(Json(isUsedPhoneCheck));
            }

            var userName = _authy.NormalizePhoneNumber(verificationRequest.CountryCode, verificationRequest.PhoneNumber);
            var user     = await _userManager.UserManager.FindByNameAsync(userName);

            if (user != null)
            {
                response.Errors.Add(new ErrorModel(string.Empty, "The user already exists"));
                return(Json(response));
            }
            HttpContext.Session.Set("phone_verification_request", verificationRequest);
            var result = await _authy.PhoneVerificationRequestAsync(
                verificationRequest.CountryCode,
                verificationRequest.PhoneNumber,
                verificationRequest.Via
                );

            return(Json(result));
        }
 public IActionResult Index(PhoneVerificationRequestModel model)
 {
     return(View(model));
 }