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 })); }
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); }