public async Task <bool> ValidateAsync(OtpValidateRequest request) { //Validate user existence var userExists = await UserExists(request.User); if (!userExists) { throw new UnauthorizedAccessException(ErrorStrings.UserNotFound); } //Validate otp request existence var otpRequest = await GetOtpRequest(request.User); if (otpRequest == null) { throw new UnauthorizedAccessException(ErrorStrings.OtpInvalidValidateRequest); } //Validate otp code var otpGeneratedTime = otpRequest.OtpCreatedTime; var validOtp = _otpGenerator.Validate(request.Otp, otpGeneratedTime); if (!validOtp) { return(false); } //Delete otp request for the user await DeleteOtpDocument(otpRequest.id, request.User.UserUuid); return(true); }
public async Task <bool> ValidateAsync(OtpValidateRequest request) { //Validate user existence var userExists = await _userRepository.Exists(request.User.GetId()); if (!userExists) { throw new UnauthorizedAccessException(ErrorStrings.UserNotFound); } //Validate otp request existence var otpRequest = await _otpRepository.GetOtpRequestOfUser(request.User.UserUuid); if (otpRequest == null) { throw new UnauthorizedAccessException(ErrorStrings.OtpInvalidValidateRequest); } //Validate otp code if (request.Otp != otpRequest.Otp || DateTime.UtcNow > otpRequest.OtpCreatedTime.AddSeconds(30)) { return(false); } //Delete otp request for the user await _otpRepository.Delete(otpRequest); return(true); }
public void Setup() { _defaultRequest = CreateRequest(); _defaultOtpDoc = CreateOtpDocument(); (_otpService, _userRepository, _otpRepository, _, _) = MoqMockHelper.Create <OtpService, IUserRepository, IOtpRepository, IOtpGenerator, ISmsSender>(); _userRepository .Setup(r => r.Exists(_defaultRequest.User.GetId())) .Returns(Task.FromResult(true)); _otpRepository .Setup(r => r.GetOtpRequestOfUser(_defaultRequest.User.UserUuid)) .Returns(Task.FromResult(_defaultOtpDoc)); }