public Optional<User> completePasswordReset(String newPassword, String key) { log.debug("Reset user password for reset key {}", key); return userRepository .findOneByResetKey(key) .filter( user -> { DateTime oneDayAgo = DateTime.now().minusHours(24); return user.getResetDate().isAfter(oneDayAgo.toInstant().getMillis()); }) .map( user -> { user.setPassword(passwordEncoder.encode(newPassword)); user.setResetKey(null); user.setResetDate(null); userRepository.save(user); return user; }); }