public CreateVerificationCodeResponse LinkTo(IBasicRequestKey request,
                                              VerificationPurpose verificationPurpose)
 {
     this.LinkTo(request);
     VerificationPurpose = verificationPurpose;
     return(this);
 }
Ejemplo n.º 2
0
 public User WithVerificationCode(VerificationPurpose verificationPurpose, string hashedVerificationCode,
                                  DateTimeOffset timeVerificationCodeExpires)
 {
     VerificationPurpose         = verificationPurpose;
     HashedVerificationCode      = hashedVerificationCode;
     TimeVerificationCodeExpires = timeVerificationCodeExpires;
     return(this);
 }
 public CreateVerificationCodeResponse WithVerificationCode(VerificationPurpose verificationPurpose,
                                                            string verificationCode, DateTimeOffset timeVerificationCodeExpires,
                                                            DateTimeOffset?timeVerificationCodeSent = null)
 {
     VerificationPurpose         = verificationPurpose;
     VerificationCode            = verificationCode;
     TimeVerificationCodeExpires = timeVerificationCodeExpires;
     return(this);
 }
Ejemplo n.º 4
0
 public TimeSpan GetLiveSpan(VerificationPurpose purpose)
 {
     if (purpose.Equals(VerificationPurpose.VerifyEmail))
     {
         return(EmailVerificationCodeLiveSpan);
     }
     if (purpose.Equals(VerificationPurpose.VerifyMobile))
     {
         return(MobileVerificationCodeLiveSpan);
     }
     return(purpose.Equals(VerificationPurpose.ResetPassword)
         ? PasswordResetVerificationCodeLiveSpan
         : TimeSpan.Zero);
 }
Ejemplo n.º 5
0
        public UserDto SetVerificationCode(string email, VerificationPurpose verificationPurpose,
                                           string hashedVerificationCode, DateTimeOffset timeVerificationCodeExpires)
        {
            UserDto userDto = null;

            Execute(uow =>
            {
                var user = uow.Store.UpdatePropertiesOnly <User>(x => x.Email.Address == email,
                                                                 x => x.WithVerificationCode(verificationPurpose, hashedVerificationCode,
                                                                                             timeVerificationCodeExpires));
                userDto = MappingService.Map <UserDto>(user);
                CacheUserDto(uow, userDto);
            });

            return(userDto);
        }
Ejemplo n.º 6
0
        public ProcessResult ResetPassword(Guid userKey, VerificationPurpose verificationPurpose,
                                           string plainTextVerificationCode, string newPlainTextPassword)
        {
            var verificationSucceeds = false;
            var currentTime          = DateTimeOffset.UtcNow;
            var result = ExecuteWithProcessResult(uow =>
            {
                var user = uow.Store.UpdatePropertiesOnly <User>(
                    x => x.Key == userKey && x.VerificationPurpose.Name == verificationPurpose.Name,
                    x =>
                {
                    verificationSucceeds =
                        _cryptoService.Validate(plainTextVerificationCode, x.HashedVerificationCode) &&
                        x.TimeVerificationCodeExpires.HasValue &&
                        x.TimeVerificationCodeExpires.Value > currentTime;

                    if (verificationSucceeds)
                    {
                        var hashedPassword = _cryptoService.CreateHash(newPlainTextPassword);
                        x.SetHashedPassword(hashedPassword);
                    }

                    x.ResetVerificationCode();
                });
                if (user == null)
                {
                    throw new KeyNotFoundException($"User {userKey} is not found.");
                }

                if (!verificationSucceeds)
                {
                    throw new Exception("Password reset failed.");
                }
            });

            return(result);
        }
 /// <summary>
 /// Get verification for phone number that is not expired
 /// </summary>
 /// <param name="phoneNumber"></param>
 /// <returns></returns>
 public async Task <VerificationCode> GetVerificationCodeFromPhoneNumberAsync(string phoneNumber, VerificationPurpose purpose)
 {
     //string formatedPhoneNumber = PhoneNumberHelpers.GetFormatedPhoneNumber(phoneNumber);
     return(new VerificationCode());
     //return await _context.VerificationCodes.FirstOrDefaultAsync(a =>  a.SetPhoneNumber == formatedPhoneNumber && a.Purpose == purpose && !(bool)a.Checked);
 }
Ejemplo n.º 8
0
 public User SetVerificationPurpose(VerificationPurpose verificationPurpose)
 {
     VerificationPurpose = verificationPurpose;
     return(this);
 }
Ejemplo n.º 9
0
 public CreateVerificationCodeResponse CreateVerificationCode(Guid userKey, IBasicRequestKey request,
                                                              VerificationPurpose verificationPurpose)
 {
     throw new NotImplementedException();
 }