@Override @Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER) public Customer registerCustomer(Customer customer, String password, String passwordConfirm) { customer.setRegistered(true); // When unencodedPassword is set the save() will encode it if (customer.getId() == null) { customer.setId(findNextCustomerId()); } customer.setUnencodedPassword(password); Customer retCustomer = saveCustomer(customer); createRegisteredCustomerRoles(retCustomer); HashMap<String, Object> vars = new HashMap<String, Object>(); vars.put("customer", retCustomer); sendEmail(customer.getEmailAddress(), getRegistrationEmailInfo(), vars); notifyPostRegisterListeners(retCustomer); return retCustomer; }
@Override @Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER) public Customer changePassword(PasswordChange passwordChange) { Customer customer = readCustomerByUsername(passwordChange.getUsername()); customer.setUnencodedPassword(passwordChange.getNewPassword()); customer.setPasswordChangeRequired(passwordChange.getPasswordChangeRequired()); customer = saveCustomer(customer); for (PasswordUpdatedHandler handler : passwordChangedHandlers) { handler.passwordChanged(passwordChange, customer, passwordChange.getNewPassword()); } return customer; }
@Override @Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER) public Customer resetPassword(PasswordReset passwordReset) { Customer customer = readCustomerByUsername(passwordReset.getUsername()); String newPassword = PasswordUtils.generateSecurePassword(passwordReset.getPasswordLength()); customer.setUnencodedPassword(newPassword); customer.setPasswordChangeRequired(passwordReset.getPasswordChangeRequired()); customer = saveCustomer(customer); for (PasswordUpdatedHandler handler : passwordResetHandlers) { handler.passwordChanged(passwordReset, customer, newPassword); } return customer; }
@Override @Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER) public GenericResponse resetPasswordUsingToken(String username, String token, String password, String confirmPassword) { GenericResponse response = new GenericResponse(); Customer customer = null; if (username != null) { customer = customerDao.readCustomerByUsername(username); } checkCustomer(customer, response); checkPassword(password, confirmPassword, response); CustomerForgotPasswordSecurityToken fpst = checkPasswordResetToken(token, customer, response); if (!response.getHasErrors()) { if (!customer.getId().equals(fpst.getCustomerId())) { if (LOG.isWarnEnabled()) { LOG.warn("Password reset attempt tried with mismatched customer and token " + customer.getId() + ", " + StringUtil.sanitize(token)); } response.addErrorCode("invalidToken"); } } if (!response.getHasErrors()) { customer.setUnencodedPassword(password); customer.setPasswordChangeRequired(false); saveCustomer(customer); invalidateAllTokensForCustomer(customer); } return response; }
/** * After a JPA merge occurs, there is a new object created representing the merged changes. The new object does * not reflect the state of transient fields that may have been set on the object that was merged. * * This method, by default, resets the state of transient properties. * and allows the user to override this method to set additional (or different) transient values. * * @param preMergedCustome * @param postMergedCustomer */ protected void resetTransientFields(Customer preMergedCustomer, Customer postMergedCustomer) { postMergedCustomer.setUnencodedPassword(preMergedCustomer.getUnencodedPassword()); postMergedCustomer.setUnencodedChallengeAnswer(preMergedCustomer.getUnencodedChallengeAnswer()); postMergedCustomer.setAnonymous(preMergedCustomer.isAnonymous()); postMergedCustomer.setCookied(preMergedCustomer.isCookied()); postMergedCustomer.setLoggedIn(preMergedCustomer.isRegistered()); postMergedCustomer.getTransientProperties().putAll(preMergedCustomer.getTransientProperties()); }
cloned.setUnencodedPassword(unencodedPassword); cloned.setTaxExemptionCode(taxExemptionCode); cloned.setUnencodedChallengeAnswer(unencodedChallengeAnswer);
/** * After a JPA merge occurs, there is a new object created representing the merged changes. The new object does * not reflect the state of transient fields that may have been set on the object that was merged. * * This method, by default, resets the state of transient properties. * and allows the user to override this method to set additional (or different) transient values. * * @param preMergedCustome * @param postMergedCustomer */ protected void resetTransientFields(Customer preMergedCustomer, Customer postMergedCustomer) { postMergedCustomer.setUnencodedPassword(preMergedCustomer.getUnencodedPassword()); postMergedCustomer.setUnencodedChallengeAnswer(preMergedCustomer.getUnencodedChallengeAnswer()); postMergedCustomer.setAnonymous(preMergedCustomer.isAnonymous()); postMergedCustomer.setCookied(preMergedCustomer.isCookied()); postMergedCustomer.setLoggedIn(preMergedCustomer.isLoggedIn()); postMergedCustomer.getTransientProperties().putAll(preMergedCustomer.getTransientProperties()); }