public CreateVerificationCodeResponse LinkTo(IBasicRequestKey request, VerificationPurpose verificationPurpose) { this.LinkTo(request); VerificationPurpose = verificationPurpose; return(this); }
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); }
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); }
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); }
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); }
public User SetVerificationPurpose(VerificationPurpose verificationPurpose) { VerificationPurpose = verificationPurpose; return(this); }
public CreateVerificationCodeResponse CreateVerificationCode(Guid userKey, IBasicRequestKey request, VerificationPurpose verificationPurpose) { throw new NotImplementedException(); }