@RequestMapping(method = RequestMethod.GET) public String get( final Model model, final HttpServletRequest request, final HttpServletResponse response) throws CMSItemNotFoundException { // Check for CMS Page where label or id is like /page final ContentPageModel pageForRequest = getContentPageForRequest(request); if (pageForRequest != null) { storeCmsPageInModel(model, pageForRequest); setUpMetaDataForContentPage(model, pageForRequest); model.addAttribute( WebConstants.BREADCRUMBS_KEY, contentPageBreadcrumbBuilder.getBreadcrumbs(pageForRequest)); return getViewForPage(pageForRequest); } // No page found - display the notFound page with error from controller storeCmsPageInModel(model, getContentPageForLabelOrId(ERROR_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ERROR_CMS_PAGE)); model.addAttribute( WebConstants.MODEL_KEY_ADDITIONAL_BREADCRUMB, resourceBreadcrumbBuilder.getBreadcrumbs("breadcrumb.not.found")); GlobalMessages.addErrorMessage(model, "system.error.page.not.found"); response.setStatus(HttpServletResponse.SC_NOT_FOUND); return ControllerConstants.Views.Pages.Error.ErrorNotFoundPage; }
@RequestMapping(value = "/request/external", method = RequestMethod.POST) public String externalPasswordRequest( @Valid final ForgottenPwdForm form, final BindingResult bindingResult, final Model model, final RedirectAttributes redirectModel) throws CMSItemNotFoundException { storeCmsPageInModel(model, getContentPageForLabelOrId(null)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(null)); model.addAttribute( WebConstants.BREADCRUMBS_KEY, resourceBreadcrumbBuilder.getBreadcrumbs("forgottenPwd.title")); if (bindingResult.hasErrors()) { return ControllerConstants.Views.Pages.Password.PasswordResetRequest; } else { try { customerFacade.forgottenPassword(form.getEmail()); GlobalMessages.addFlashMessage( redirectModel, GlobalMessages.CONF_MESSAGES_HOLDER, "account.confirmation.forgotten.password.link.sent"); } catch (final UnknownIdentifierException unknownIdentifierException) { LOG.warn("Email: " + form.getEmail() + " does not exist in the database."); } return REDIRECT_PWD_REQ_CONF; } }
@RequestMapping(value = "/add-address", method = RequestMethod.GET) @RequireHardLogIn public String addAddress(final Model model) throws CMSItemNotFoundException { model.addAttribute("countryData", checkoutFacade.getDeliveryCountries()); model.addAttribute("titleData", userFacade.getTitles()); final AddressForm addressForm = getPreparedAddressForm(); model.addAttribute("addressForm", addressForm); model.addAttribute("addressBookEmpty", Boolean.valueOf(userFacade.isAddressBookEmpty())); model.addAttribute("isDefaultAddress", Boolean.FALSE); storeCmsPageInModel(model, getContentPageForLabelOrId(ADD_EDIT_ADDRESS_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ADD_EDIT_ADDRESS_CMS_PAGE)); final List<Breadcrumb> breadcrumbs = accountBreadcrumbBuilder.getBreadcrumbs(null); breadcrumbs.add( new Breadcrumb( "/my-account/address-book", getMessageSource() .getMessage("text.account.addressBook", null, getI18nService().getCurrentLocale()), null)); breadcrumbs.add( new Breadcrumb( "#", getMessageSource() .getMessage( "text.account.addressBook.addEditAddress", null, getI18nService().getCurrentLocale()), null)); model.addAttribute("breadcrumbs", breadcrumbs); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
protected String errorUpdatingEmail(final Model model) throws CMSItemNotFoundException { GlobalMessages.addErrorMessage(model, "form.global.error"); storeCmsPageInModel(model, getContentPageForLabelOrId(UPDATE_EMAIL_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(UPDATE_EMAIL_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile")); return getViewForPage(model); }
@RequestMapping(method = RequestMethod.GET) @RequireHardLogIn public String account(final Model model) throws CMSItemNotFoundException { storeCmsPageInModel(model, getContentPageForLabelOrId(ACCOUNT_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ACCOUNT_CMS_PAGE)); model.addAttribute("breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs(null)); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/request/external/conf", method = RequestMethod.GET) public String getExternalPasswordRequestConf(final Model model) throws CMSItemNotFoundException { storeCmsPageInModel(model, getContentPageForLabelOrId(null)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(null)); model.addAttribute( WebConstants.BREADCRUMBS_KEY, resourceBreadcrumbBuilder.getBreadcrumbs("forgottenPwd.title")); return ControllerConstants.Views.Pages.Password.PasswordResetRequestConfirmation; }
@RequestMapping(value = "/payment-details", method = RequestMethod.GET) @RequireHardLogIn public String paymentDetails(final Model model) throws CMSItemNotFoundException { model.addAttribute("customerData", customerFacade.getCurrentCustomer()); model.addAttribute("paymentInfoData", userFacade.getCCPaymentInfos(true)); storeCmsPageInModel(model, getContentPageForLabelOrId(PAYMENT_DETAILS_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ADD_EDIT_ADDRESS_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.paymentDetails")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/address-book", method = RequestMethod.GET) @RequireHardLogIn public String getAddressBook(final Model model) throws CMSItemNotFoundException { model.addAttribute("addressData", userFacade.getAddressBook()); storeCmsPageInModel(model, getContentPageForLabelOrId(ADDRESS_BOOK_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ADDRESS_BOOK_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.addressBook")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/update-password", method = RequestMethod.POST) @RequireHardLogIn public String updatePassword( final UpdatePasswordForm updatePasswordForm, final BindingResult bindingResult, final Model model, final RedirectAttributes redirectAttributes) throws CMSItemNotFoundException { getPasswordValidator().validate(updatePasswordForm, bindingResult); if (!bindingResult.hasErrors()) { if (updatePasswordForm.getNewPassword().equals(updatePasswordForm.getCheckNewPassword())) { try { customerFacade.changePassword( updatePasswordForm.getCurrentPassword(), updatePasswordForm.getNewPassword()); } catch (final PasswordMismatchException localException) { bindingResult.rejectValue( "currentPassword", "profile.currentPassword.invalid", new Object[] {}, "profile.currentPassword.invalid"); } } else { bindingResult.rejectValue( "checkNewPassword", "validation.checkPwd.equals", new Object[] {}, "validation.checkPwd.equals"); } } if (bindingResult.hasErrors()) { GlobalMessages.addErrorMessage(model, "form.global.error"); storeCmsPageInModel(model, getContentPageForLabelOrId(UPDATE_PASSWORD_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(UPDATE_PASSWORD_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile.updatePasswordForm")); return getViewForPage(model); } else { GlobalMessages.addFlashMessage( redirectAttributes, GlobalMessages.CONF_MESSAGES_HOLDER, "text.account.confirmation.password.updated", null); return REDIRECT_TO_PROFILE_PAGE; } }
@RequestMapping(value = "/update-password", method = RequestMethod.GET) @RequireHardLogIn public String updatePassword(final Model model) throws CMSItemNotFoundException { final UpdatePasswordForm updatePasswordForm = new UpdatePasswordForm(); model.addAttribute("updatePasswordForm", updatePasswordForm); storeCmsPageInModel(model, getContentPageForLabelOrId(UPDATE_PASSWORD_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(UPDATE_PASSWORD_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile.updatePasswordForm")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/change", method = RequestMethod.GET) public String getChangePassword( @RequestParam(required = false) final String token, final Model model) throws CMSItemNotFoundException { if (StringUtils.isBlank(token)) { return REDIRECT_HOME; } final UpdatePwdForm form = new UpdatePwdForm(); form.setToken(token); model.addAttribute(form); storeCmsPageInModel(model, getContentPageForLabelOrId(UPDATE_PWD_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(UPDATE_PWD_CMS_PAGE)); model.addAttribute( WebConstants.BREADCRUMBS_KEY, resourceBreadcrumbBuilder.getBreadcrumbs("updatePwd.title")); return ControllerConstants.Views.Pages.Password.PasswordResetChangePage; }
@RequestMapping(value = "/update-email", method = RequestMethod.GET) @RequireHardLogIn public String editEmail(final Model model) throws CMSItemNotFoundException { final CustomerData customerData = customerFacade.getCurrentCustomer(); final UpdateEmailForm updateEmailForm = new UpdateEmailForm(); updateEmailForm.setEmail(customerData.getDisplayUid()); model.addAttribute("updateEmailForm", updateEmailForm); storeCmsPageInModel(model, getContentPageForLabelOrId(UPDATE_EMAIL_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(UPDATE_EMAIL_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/update-profile", method = RequestMethod.POST) @RequireHardLogIn public String updateProfile( final UpdateProfileForm updateProfileForm, final BindingResult bindingResult, final Model model, final RedirectAttributes redirectAttributes) throws CMSItemNotFoundException { getProfileValidator().validate(updateProfileForm, bindingResult); String returnAction = ControllerConstants.Views.Pages.Account.AccountProfileEditPage; final CustomerData currentCustomerData = customerFacade.getCurrentCustomer(); final CustomerData customerData = new CustomerData(); customerData.setTitleCode(updateProfileForm.getTitleCode()); customerData.setFirstName(updateProfileForm.getFirstName()); customerData.setLastName(updateProfileForm.getLastName()); customerData.setUid(currentCustomerData.getUid()); customerData.setDisplayUid(currentCustomerData.getDisplayUid()); model.addAttribute("titleData", userFacade.getTitles()); if (bindingResult.hasErrors()) { GlobalMessages.addErrorMessage(model, "form.global.error"); } else { try { customerFacade.updateProfile(customerData); GlobalMessages.addFlashMessage( redirectAttributes, GlobalMessages.CONF_MESSAGES_HOLDER, "text.account.profile.confirmationUpdated", null); returnAction = REDIRECT_TO_PROFILE_PAGE; } catch (final DuplicateUidException e) { bindingResult.rejectValue("email", "registration.error.account.exists.title"); GlobalMessages.addErrorMessage(model, "form.global.error"); } } storeCmsPageInModel(model, getContentPageForLabelOrId(PROFILE_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(PROFILE_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile")); return returnAction; }
@RequestMapping(value = "/profile", method = RequestMethod.GET) @RequireHardLogIn public String profile(final Model model) throws CMSItemNotFoundException { final List<TitleData> titles = userFacade.getTitles(); final CustomerData customerData = customerFacade.getCurrentCustomer(); if (customerData.getTitleCode() != null) { model.addAttribute("title", findTitleForCode(titles, customerData.getTitleCode())); } model.addAttribute("customerData", customerData); storeCmsPageInModel(model, getContentPageForLabelOrId(PROFILE_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(PROFILE_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/orders", method = RequestMethod.GET) @RequireHardLogIn public String orders( @RequestParam(value = "page", defaultValue = "0") final int page, @RequestParam(value = "show", defaultValue = "Page") final ShowMode showMode, @RequestParam(value = "sort", required = false) final String sortCode, final Model model) throws CMSItemNotFoundException { // Handle paged search results final PageableData pageableData = createPageableData(page, 5, sortCode, showMode); final SearchPageData<OrderHistoryData> searchPageData = orderFacade.getPagedOrderHistoryForStatuses(pageableData); populateModel(model, searchPageData, showMode); storeCmsPageInModel(model, getContentPageForLabelOrId(ORDER_HISTORY_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ORDER_HISTORY_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.orderHistory")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/update-profile", method = RequestMethod.GET) @RequireHardLogIn public String editProfile(final Model model) throws CMSItemNotFoundException { model.addAttribute("titleData", userFacade.getTitles()); final CustomerData customerData = customerFacade.getCurrentCustomer(); final UpdateProfileForm updateProfileForm = new UpdateProfileForm(); updateProfileForm.setTitleCode(customerData.getTitleCode()); updateProfileForm.setFirstName(customerData.getFirstName()); updateProfileForm.setLastName(customerData.getLastName()); model.addAttribute("updateProfileForm", updateProfileForm); storeCmsPageInModel(model, getContentPageForLabelOrId(UPDATE_PROFILE_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(UPDATE_PROFILE_CMS_PAGE)); model.addAttribute( "breadcrumbs", accountBreadcrumbBuilder.getBreadcrumbs("text.account.profile")); model.addAttribute("metaRobots", "noindex,nofollow"); return getViewForPage(model); }
@RequestMapping(value = "/order/" + ORDER_CODE_PATH_VARIABLE_PATTERN, method = RequestMethod.GET) @RequireHardLogIn public String order(@PathVariable("orderCode") final String orderCode, final Model model) throws CMSItemNotFoundException { try { final OrderData orderDetails = orderFacade.getOrderDetailsForCode(orderCode); model.addAttribute("orderData", orderDetails); final List<Breadcrumb> breadcrumbs = accountBreadcrumbBuilder.getBreadcrumbs(null); breadcrumbs.add( new Breadcrumb( "/my-account/orders", getMessageSource() .getMessage( "text.account.orderHistory", null, getI18nService().getCurrentLocale()), null)); breadcrumbs.add( new Breadcrumb( "#", getMessageSource() .getMessage( "text.account.order.orderBreadcrumb", new Object[] {orderDetails.getCode()}, "Order {0}", getI18nService().getCurrentLocale()), null)); model.addAttribute("breadcrumbs", breadcrumbs); } catch (final UnknownIdentifierException e) { LOG.warn("Attempted to load a order that does not exist or is not visible", e); return REDIRECT_MY_ACCOUNT; } storeCmsPageInModel(model, getContentPageForLabelOrId(ORDER_DETAIL_CMS_PAGE)); model.addAttribute("metaRobots", "noindex,nofollow"); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ORDER_DETAIL_CMS_PAGE)); return getViewForPage(model); }
@RequestMapping( value = "/edit-address/" + ADDRESS_CODE_PATH_VARIABLE_PATTERN, method = RequestMethod.GET) @RequireHardLogIn public String editAddress( @PathVariable("addressCode") final String addressCode, final Model model) throws CMSItemNotFoundException { final AddressForm addressForm = new AddressForm(); model.addAttribute("countryData", checkoutFacade.getDeliveryCountries()); model.addAttribute("titleData", userFacade.getTitles()); model.addAttribute("addressForm", addressForm); model.addAttribute("addressBookEmpty", Boolean.valueOf(userFacade.isAddressBookEmpty())); for (final AddressData addressData : userFacade.getAddressBook()) { if (addressData.getId() != null && addressData.getId().equals(addressCode)) { model.addAttribute( "regions", getI18NFacade().getRegionsForCountryIso(addressData.getCountry().getIsocode())); model.addAttribute("country", addressData.getCountry().getIsocode()); model.addAttribute("addressData", addressData); addressForm.setAddressId(addressData.getId()); addressForm.setTitleCode(addressData.getTitleCode()); addressForm.setFirstName(addressData.getFirstName()); addressForm.setLastName(addressData.getLastName()); addressForm.setLine1(addressData.getLine1()); addressForm.setLine2(addressData.getLine2()); addressForm.setTownCity(addressData.getTown()); addressForm.setPostcode(addressData.getPostalCode()); addressForm.setCountryIso(addressData.getCountry().getIsocode()); if (addressData.getRegion() != null && !StringUtils.isEmpty(addressData.getRegion().getIsocode())) { addressForm.setRegionIso(addressData.getRegion().getIsocode()); } if (isDefaultAddress(addressData.getId())) { addressForm.setDefaultAddress(Boolean.TRUE); model.addAttribute("isDefaultAddress", Boolean.TRUE); } else { addressForm.setDefaultAddress(Boolean.FALSE); model.addAttribute("isDefaultAddress", Boolean.FALSE); } break; } } storeCmsPageInModel(model, getContentPageForLabelOrId(ADD_EDIT_ADDRESS_CMS_PAGE)); setUpMetaDataForContentPage(model, getContentPageForLabelOrId(ADD_EDIT_ADDRESS_CMS_PAGE)); final List<Breadcrumb> breadcrumbs = accountBreadcrumbBuilder.getBreadcrumbs(null); breadcrumbs.add( new Breadcrumb( "/my-account/address-book", getMessageSource() .getMessage("text.account.addressBook", null, getI18nService().getCurrentLocale()), null)); breadcrumbs.add( new Breadcrumb( "#", getMessageSource() .getMessage( "text.account.addressBook.addEditAddress", null, getI18nService().getCurrentLocale()), null)); model.addAttribute("breadcrumbs", breadcrumbs); model.addAttribute("metaRobots", "noindex,nofollow"); model.addAttribute("edit", Boolean.TRUE); return getViewForPage(model); }