Skip to content

Commit

Permalink
refactor: Interceptor로 controller 중복 제거
Browse files Browse the repository at this point in the history
  • Loading branch information
school0bhy committed Jul 20, 2019
1 parent 2d79e10 commit dadf174
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,57 @@

@Component
public class AuthenticationInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
boolean loggedIn = loggedIn(request);

if (loggedIn && needLogout(request)) {
response.sendRedirect("/");
return false;
}

if (!loggedIn && needLogin(request)) {
response.sendRedirect("/login");
return false;
}
return true;
}

private boolean loggedIn(HttpServletRequest request) {
Optional<HttpSession> sessionOpt = Optional.ofNullable(request.getSession());
if (sessionOpt.isPresent()) {
return sessionOpt.get().getAttribute("user") != null;
}
return false;
}

private boolean needLogout(HttpServletRequest request) {
String uri = request.getRequestURI();

return uri.equals("/signup")
|| uri.equals("/login")
|| (uri.equals("/users") && request.getMethod().equals("POST"));
}

private boolean needLogin(HttpServletRequest request) {
String uri = request.getRequestURI();

return uri.startsWith("/mypage")
|| request.getMethod().equals("DELETE")
|| uri.equals("/logout");
}


@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
Optional<HttpSession> sessionOpt = Optional.ofNullable(request.getSession());
sessionOpt.ifPresent(session -> {
Object user = session.getAttribute("user");

if (request.getRequestURI().equals("/logout") || user == null) {
return;
if (!request.getRequestURI().equals("/logout") && user != null) {
modelAndView.addObject("user", user);
}

modelAndView.addObject("user", user);
}
);

}
}
42 changes: 6 additions & 36 deletions src/main/java/techcourse/myblog/web/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,9 @@ public UserController(UserRepository userRepository) {
}

@GetMapping("/signup")
public String createSignupForm(HttpSession session,
Model model,
public String createSignupForm(Model model,
UserDto userDto,
BindingResult bindingResult) {
if (session.getAttribute("user") != null) {
return "redirect:/";
}

List<ObjectError> errors = (List<ObjectError>) model.asMap().get("errors");
if (errors != null) {
errors.forEach(error -> bindingResult.addError(error));
Expand All @@ -51,13 +46,9 @@ public String createSignupForm(HttpSession session,
}

@PostMapping("/users")
public RedirectView createUser(HttpSession session,
@ModelAttribute("userDto") @Validated({Default.class, UserInfo.class}) UserDto userDto,
public RedirectView createUser(@ModelAttribute("userDto") @Validated({Default.class, UserInfo.class}) UserDto userDto,
BindingResult bindingResult,
RedirectAttributes redirectAttributes) {
if (session.getAttribute("user") != null) {
return new RedirectView("/");
}

if (bindingResult.hasErrors()) {
redirectAttributes.addFlashAttribute("errors", bindingResult.getAllErrors());
Expand All @@ -79,12 +70,7 @@ public RedirectView createUser(HttpSession session,
@GetMapping("/login")
public String createLoginForm(Model model,
UserDto userDto,
HttpSession session,
BindingResult bindingResult) {
if (session.getAttribute("user") != null) {
return "redirect:/";
}

List<ObjectError> errors = (List<ObjectError>) model.asMap().get("errors");
if (errors != null) {
errors.forEach(error -> bindingResult.addError(error));
Expand All @@ -98,10 +84,6 @@ public RedirectView login(HttpSession session,
@Validated(Default.class) UserDto userDto,
BindingResult bindingResult,
RedirectAttributes redirectAttributes) {
if (session.getAttribute("user") != null) {
return new RedirectView("/login");
}

if (bindingResult.hasErrors()) {
redirectAttributes.addFlashAttribute("errors", bindingResult.getAllErrors());
redirectAttributes.addFlashAttribute("userDto", userDto);
Expand Down Expand Up @@ -139,23 +121,14 @@ public String userList(Model model) {
}

@GetMapping("/mypage")
public String myPage(Model model, HttpSession session) {
Object user = session.getAttribute("user");
if (user == null) {
return "redirect:/";
}
public String myPage() {
return "mypage";
}

@GetMapping("/mypage/edit")
public String createMyPageForm(HttpSession session,
Model model,
public String createMyPageForm(Model model,
UserDto userDto,
BindingResult bindingResult) {
User user = (User) session.getAttribute("user");
if (user == null) {
return "redirect:/";
}

List<ObjectError> errors = (List<ObjectError>) model.asMap().get("errors");
if (errors != null) {
Expand All @@ -166,14 +139,11 @@ public String createMyPageForm(HttpSession session,
}

@PutMapping("/mypage")
public RedirectView editUser(@Validated(UserInfo.class) UserDto userDto,
HttpSession session,
public RedirectView editUser(HttpSession session,
@Validated(UserInfo.class) UserDto userDto,
BindingResult bindingResult,
RedirectAttributes redirectAttributes) {
User user = (User) session.getAttribute("user");
if (user == null) {
return new RedirectView("/");
}

if (bindingResult.hasErrors()) {
redirectAttributes.addFlashAttribute("errors", bindingResult.getAllErrors());
Expand Down

0 comments on commit dadf174

Please sign in to comment.