public async Task <IActionResult> VerifyCodeWithLockout([FromBody] CheckSmsCodeRequest model)
        {
            SmsCheckResult checkResult = await _confirmationCodesService.CheckSmsAsync(model.ClientId, model.Phone, model.Code, ConfirmOperations.Google2FaSmsConfirm);

            if (checkResult.Status == CallLimitStatus.LimitExceed)
            {
                throw new Google2FaTooManyAttemptsException(model.ClientId, "Client has exceeded maximum consecutive failed verification attempts");
            }

            return(Ok(new VerificationResult {
                IsValid = checkResult.Result
            }));
        }
Ejemplo n.º 2
0
        public async Task <SmsCheckResult> CheckSmsAsync(string clientId, string mobilePhone, string code, string operation)
        {
            var smsCheck = new SmsCheckResult();

            var callLimitsResult = await _callTimeLimitsService.ProcessCallLimitsAsync(clientId, operation, false);

            if (callLimitsResult.Status != CallLimitStatus.Allowed)
            {
                smsCheck.Status = callLimitsResult.Status;
                return(smsCheck);
            }

            smsCheck.Result = await _smsVerificationCodeRepository.CheckAsync(null, mobilePhone, code);

            return(smsCheck);
        }