Common Controller
Common Controller
java
import java.util.List;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import sg.nus.iss.cts.controller.service.EmployeeService;
import sg.nus.iss.cts.controller.service.UserService;
import sg.nus.iss.cts.model.Employee;
import sg.nus.iss.cts.model.User;
import sg.nus.iss.cts.model.UserSession;
@Controller
public class CommonController {
@Autowired
private UserService userService;
@Autowired
private EmployeeService employeeService;
@RequestMapping(value = "/home/authenticate")
public String authenticate(@ModelAttribute("user") @Valid User user, BindingResult bindingResult, Model
model,
HttpSession session) {
if (bindingResult.hasErrors()) {
return "login";
}
User u = userService.authenticate(user.getName(), user.getPassword());
if (u == null) {
model.addAttribute("loginMessage", "Incorrect username/password");
return "login";
}
// c. The subordinates
List<Employee> subordinates = employeeService.findSubordinates(u.getEmployeeId());
if (subordinates != null) {
userSession.setSubordinates(subordinates);
}
session.setAttribute("usession", userSession);
List<String> roleIds = u.getRoleIds();
System.out.println("Roles:");
roleIds.forEach(System.out::println);
if (roleIds.contains("manager")) {
return "redirect:/manager/pending";
}
return "redirect:/staff/course/history";
}
@GetMapping("/about")
public String home() {
return "about";
}
@RequestMapping(value = "/logout")