@Override @Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER) public Customer saveCustomer(Customer customer) { return saveCustomer(customer, customer.isRegistered()); }
@Override public void processRegistrationEvent(Customer customer) { List<Order> orders = orderService.findOrdersByEmail(customer.getEmailAddress()); List<Order> updOrders = new ArrayList<>(); for (Order o : orders) { if (!o.getCustomer().isRegistered()) { o.setCustomer(customer); updOrders.add(o); } } List<PostUpdateOrderExtensionHandler> handlers = extensionManager.getHandlers(); for (PostUpdateOrderExtensionHandler h : handlers) { ExtensionResultStatusType status = h.postUpdateAll(updOrders); if (!extensionManager.shouldContinue(status, null, null, null)) { break; } } } }
if (customer != null && !customer.isRegistered() && !customer.isLoggedIn() && !customer.isCookied()) { customer.setAnonymous(true);
@Override @Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER) public Customer saveCustomer(Customer customer, boolean register) { if (register && !customer.isRegistered()) { customer.setRegistered(true); } if (customer.getUnencodedPassword() != null) { customer.setPassword(encodePassword(customer.getUnencodedPassword(), customer)); } // let's make sure they entered a new challenge answer (we will populate // the password field with hashed values so check that they have changed // id if (customer.getUnencodedChallengeAnswer() != null && !customer.getUnencodedChallengeAnswer().equals(customer.getChallengeAnswer())) { customer.setChallengeAnswer(encodePassword(customer.getUnencodedChallengeAnswer(), customer)); } return customerDao.save(customer); }
/** * 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()); }
public void validate(Object obj, Errors errors, boolean useEmailForUsername) { RegisterCustomerForm form = (RegisterCustomerForm) obj; Customer customerFromDb = customerService.readCustomerByUsername(form.getCustomer().getUsername()); if (customerFromDb != null && customerFromDb.isRegistered()) { if (useEmailForUsername) { errors.rejectValue("customer.emailAddress", "emailAddress.used", null, null); } else { errors.rejectValue("customer.username", "username.used", null, null); } } ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "password.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "passwordConfirm", "passwordConfirm.required"); errors.pushNestedPath("customer"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "firstName.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastName", "lastName.required"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "emailAddress", "emailAddress.required"); errors.popNestedPath(); if (!errors.hasErrors()) { if (!form.getPassword().matches(getValidatePasswordExpression())) { errors.rejectValue("password", "password.invalid", null, null); } if (!form.getPassword().equals(form.getPasswordConfirm())) { errors.rejectValue("password", "passwordConfirm.invalid", null, null); } if (!GenericValidator.isEmail(form.getCustomer().getEmailAddress())) { errors.rejectValue("customer.emailAddress", "emailAddress.invalid", null, null); } } }
.filter(c -> !c.isRegistered()) .orElseThrow(() -> new ResourceNotFoundException("User already registered"));
protected void forceNewAuthenticationIfPrincipalIsNotValidForScope(User principal, Set<String> scopeSet) { for(String scope : scopeSet) { if (Scope.CUSTOMER.matches(scope)) { if ( !(principal instanceof CustomerUserDetails) ) { throw new InsufficientAuthenticationException("Not logged in as a customer"); } Customer customer = customerService.readCustomerById(((CustomerUserDetails) principal).getId()); if (Scope.CUSTOMER_REGISTERED.matches(scope)) { if (!customer.isRegistered()) { throw new InsufficientAuthenticationException("Not logged in as a registered customer"); } } } else if (Scope.STAFF.matches(scope) && ( !(principal instanceof AdminUserDetails) )) { throw new InsufficientAuthenticationException("Not logged in as an admin user"); } } }