示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }