JCart : Customer Registration
source link: https://www.sivalabs.in/2015/12/jcart-customer-registration/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
JCart : Customer RegistrationSkip to content
To facilitate new customer registration we will provide a new Registration form where customer provide his details and register with our system.
Let us implement the back-end customer service operations.
public interface CustomerRepository extends JpaRepository<Customer, Integer>{
Customer findByEmail(String email);
}
@Service
@Transactional
public class CustomerService
{
@Autowired
CustomerRepository customerRepository;
public Customer getCustomerByEmail(String email) {
return customerRepository.findByEmail(email);
}
public Customer createCustomer(Customer customer) {
return customerRepository.save(customer);
}
}
@Component
public class CustomerValidator implements Validator
{
@Autowired
private CustomerService custmoerService;
@Override
public boolean supports(Class<?> clazz) {
return Customer.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
Customer customer = (Customer) target;
Customer customerByEmail = custmoerService
.getCustomerByEmail(customer.getEmail());
if(customerByEmail != null){
errors.rejectValue("email", "error.exists",
new Object[]{customer.getEmail()},
"Email "+customer.getEmail()+" already in use");
}
}
}
Let us implement the CustomerController registration handler methods as follows:
@Controller
public class CustomerController extends JCartSiteBaseController
{
@Autowired private CustomerService customerService;
@Autowired private CustomerValidator customerValidator;
@Autowired protected PasswordEncoder passwordEncoder;
@Override
protected String getHeaderTitle()
{
return "Login/Register";
}
@RequestMapping(value="/register", method=RequestMethod.GET)
protected String registerForm(Model model)
{
model.addAttribute("customer", new Customer());
return "register";
}
@RequestMapping(value="/register", method=RequestMethod.POST)
protected String register(
@Valid @ModelAttribute("customer") Customer customer,
BindingResult result, Model model,
RedirectAttributes redirectAttributes)
{
customerValidator.validate(customer, result);
if(result.hasErrors()){
return "register";
}
String password = customer.getPassword();
String encodedPwd = passwordEncoder.encode(password);
customer.setPassword(encodedPwd);
Customer persistedCustomer = customerService.createCustomer(customer);
logger.debug("Created new Customer with id : {} and email : {}",
persistedCustomer.getId(), persistedCustomer.getEmail());
redirectAttributes.addFlashAttribute("info",
"Customer created successfully");
return "redirect:/login";
}
}
Finally let us create the register.html thymeleaf view as follows:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
layout:decorator="layout/mainLayout">
<head>
<title>Register</title>
</head>
<body>
<div layout:fragment="content">
<div class="single-product-area">
<div class="zigzag-bottom"></div>
<div class="container">
<div class="row">
<div class="col-md-offset-3 col-md-6" >
<form id="login-form-wrap" th:action="@{/register}" th:object="${customer}" method="post">
<p class="form-row form-row-first">
<label for="firstName">FirstName <span class="required">*</span>
</label>
<input type="text" th:field="*{firstName}" class="input-text"/>
<p th:if="${#fields.hasErrors('firstName')}" th:errors="*{firstName}" th:errorclass="text-danger">Incorrect data</p>
</p>
<p class="form-row form-row-first">
<label for="lastName">LastName <span class="required">*</span>
</label>
<input type="text" th:field="*{lastName}" class="input-text"/>
<p th:if="${#fields.hasErrors('lastName')}" th:errors="*{lastName}" th:errorclass="text-danger">Incorrect data</p>
</p>
<p class="form-row form-row-first">
<label for="email">Email <span class="required">*</span>
</label>
<input type="email" th:field="*{email}" class="input-text" placeholder="Email"/>
<p th:if="${#fields.hasErrors('email')}" th:errors="*{email}" th:errorclass="text-danger">Incorrect data</p>
</p>
<p class="form-row form-row-last">
<label for="password">Password <span class="required">*</span>
</label>
<input type="password" th:field="*{password}" class="input-text" placeholder="Password"/>
<p th:if="${#fields.hasErrors('password')}" th:errors="*{password}" th:errorclass="text-danger">Incorrect data</p>
</p>
<p class="form-row form-row-first">
<label for="phone">Phone <span class="required">*</span>
</label>
<input type="text" th:field="*{phone}" class="input-text"/>
<p th:if="${#fields.hasErrors('phone')}" th:errors="*{phone}" th:errorclass="text-danger">Incorrect data</p>
</p>
<div class="clear"></div>
<p class="form-row">
<input type="submit" value="Login" class="button"/>
</p>
<p>
<div th:if="${info!=null}" class="alert alert-warning alert-dismissable" >
<p><i class="icon fa fa-warning"></i> <span th:text="${info}"></span></p>
</div>
</p>
<p class="lost_password">
Existing Customer? <a href="#" th:href="@{/login}" th:text="#{label.login}">Login</a>
</p>
<div class="clear"></div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Now new customers can click on Register link and register themselves. Once the registration is successful he can login and proceed to checkout the cart.
Recommend
-
4
Event Information
-
6
JCart : ShoppingCart Add Item To CartSkip to contentShare this:In our HomePage/CategoryPage/ProductPage...
-
7
JCart : Iteration -6Skip to contentShare this:In this Iteration-6 we will be implementing the Customer Login/Registe...
-
9
JCart : View CartSkip to contentShare this:In our earlier post we have implemented Add To Cart functionali...
-
5
JCart : ShoppingCart Product Search ResultsSkip to contentShare this:In our main template we have...
-
9
JCart : ShoppingCart Product PageSkip to contentShare this:Customers can click on a product to view more de...
-
2
JCart : Iteration-5Skip to contentShare this:In Iteration-5 we will be primarily working on Cart related functionali...
-
7
JCart : Customer LoginSkip to contentShare this:So far we have implemented the functionality where customers can brows...
-
10
Vijay S B December 8, 2022 8 minute read ...
-
6
Finding Your Realtime Event Registration Forms In Customer Insights Journeys 2023-11-14 Categories:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK