Spring Boot Contact Management App: Controller Logic
Contact Management App: Controller Logic
package ca.sheridancollege.controllers;
@Controller
HomeController
This class handles the requests.
@Autowired DatabaseAccess da;
@Autowired UserDetailsServiceImpl userDetailsService;
@GetMapping("/")
goHome()
Navigates to the add contact page.
return "addContact.html";
@GetMapping("/addContact")
addContact()
Adds a new contact to the database.
@RequestParam(required = false) String name,
@RequestParam(required = false) int phoneNumber,
@RequestParam(required = false) String address,
@RequestParam(required = false) String email,
@RequestParam String role
Contact contact = new Contact(name, phoneNumber, address, email, role);
da.addContact(contact);
return "addContact.html";
@GetMapping("/show/delete/{id}")
deleteContact()
Deletes a contact by ID.
@PathVariable int id
da.deleteContactById(id);
return "redirect:/show";
@GetMapping("/show/edit/{id}")
editContact()
Prepares the contact for editing.
@PathVariable int id, Model model
Contact c = da.getContactById(id);
model.addAttribute("contact", c);
return "authorized/editContact.html";
@GetMapping("/modify")
editContactRecord()
Updates an existing contact record.
@RequestParam int id,
@RequestParam String name,
@RequestParam int phoneNumber,
@RequestParam String address,
@RequestParam String email,
@RequestParam String role
System.out.println("MODIFY METHOD::: " + id);
Contact c = new Contact(id, name, phoneNumber, address, email, role);
da.editContact(c);
return "redirect:/show";
@GetMapping("/show")
showContacts()
Displays all contacts based on user roles.
Model model
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
ArrayList<Long> roles = new ArrayList<Long>();
ArrayList<Contact> contacts = new ArrayList<Contact>();
roles = da.getRolesByUserName(auth.getName());
System.out.println("admin method " + auth.getName());
System.out.println("roles " + roles.get(0));
for (int i = 0; i < roles.size(); i++) {
if (roles.get(i) == 1) {
contacts.addAll(da.getMemberContacts());
}
if (roles.get(i) == 2) {
contacts.addAll(da.getGuestContacts());
}
if (roles.get(i) == 3) {
contacts.addAll(da.getAdminContacts());
}
}
model.addAttribute("contact", contacts);
return "/authorized/showContacts.html";
@GetMapping("/login")
goLogin()
Navigates to the login page.
return "login.html";
@GetMapping("/access-denied")
goAccessDenied()
Navigates to the access denied error page.
return "/error/access-denied.html";
@GetMapping("/register")
goRegister()
Navigates to the registration page.
return "register.html";
@GetMapping("/registerUser")
registerUser()
Registers a new user.
@RequestParam String username,
@RequestParam String password,
@RequestParam(required = false) String admin,
@RequestParam(required = false) String guest,
@RequestParam(required = false) String member
String encryptedPassword = encryptPassword(password);
User user = new User(username, encryptedPassword);
da.registerUser(user);
if (admin != null) {
da.registerUserRole(user, admin);
}
if (guest != null) {
da.registerUserRole(user, guest);
}
if (member != null) {
da.registerUserRole(user, member);
}
System.out.println("username: " + username);
System.out.println("password: " + password);
return "register.html";
encryptPassword()
Encrypts the password using BCrypt.
public static String encryptPassword(String password) {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder.encode(password);
}
@GetMapping("/viewContacts")
showStudents()
Retrieves contacts from an external REST API.
Model model, RestTemplate restTemplate
ResponseEntity<Contact[]> responseEntity = restTemplate.getForEntity(
"http://localhost:8080/contactList",
Contact[].class
);
Contact[] contacts = responseEntity.getBody();
model.addAttribute("contact", contacts);
return "showContacts.html";
@GetMapping(value = "/getContact/{id}", produces = "application/json")
@ResponseBody
getContact()
Retrieves a single contact from an external REST API by ID.
@PathVariable int id, RestTemplate restTemplate
Map<String, Object> data = new HashMap<String, Object>();
ResponseEntity<Contact> responseEntity = restTemplate.getForEntity(
"http://localhost:8080/contactList/" + id,
Contact.class
);
data.put("contact", responseEntity.getBody());
return data;