1. 회원가입
@PostMapping("/join")
public String join(UserRequest.JoinDTO requestDTO){
try{
User sessionUser = userRepository.save(requestDTO.toEntity());
session.setAttribute("sessionUser",sessionUser);
}catch (NoResultException e){
throw new Exception400("동일한 아이디가 존재합니다.");
}
//회원가입 후 자동 로그인되게
return "redirect:/";
}

2. 로그인
@PostMapping("/login")
public String login(UserRequest.LoginDTO requestDTO){
try {
User sessionUser = userRepository.findByUsernameAndPassword(requestDTO);
session.setAttribute("sessionUser",sessionUser);
} catch (Exception e) {
throw new Exception401("아이디 혹은 비밀번호가 일치하지 않습니다.");
}
return "redirect:/";
}

3. 게시글 수정하기
@PostMapping("/board/{id}/update")
public String update(@PathVariable Integer id,BoardRequest.UpdateDTO requestDTO){
Board board = boardReposiroty.findById(id);
User sessionUser = (User) session.getAttribute("sessionUser");
if(sessionUser.getId()!=board.getUser().getId()){
throw new Exception403("게시글을 수정할 권한이 없습니다");
}

4. 없는 게시글 주소를 입력했을 때
@GetMapping("/board/{id}/update-form")
public String updateForm(@PathVariable Integer id,HttpServletRequest request){
Board board = boardReposiroty.findById(id);
if(board==null){
throw new Exception404("해당 게시글을 찾을 수 없습니다.");
}
request.setAttribute("board",board);
return "board/update-form";
}

5. 게시글 삭제하기
//@PostMapping("/board/{id}/delete")
@RequestMapping(value = "/board/{id}/delete", method = {RequestMethod.GET, RequestMethod.POST})
public String delete(@PathVariable Integer id){
Board board = boardReposiroty.findById(id);
User sessionUser = (User) session.getAttribute("sessionUser");
if(sessionUser.getId()!=board.getUser().getId()){
throw new Exception403("게시글을 삭제할 권한이 없습니다");
}
boardReposiroty.deleteById(id);
return "redirect:/";
}

@RequestMapping(value = "/board/{id}/delete", method = {RequestMethod.GET, RequestMethod.POST})
은 delete 페이지 화면이 없어서 그런지 주소를 넣으면 오류 페이지가 뜨고 throw가 되지 않아서 추가했다. 저 코드를 추가하니까 페이지가 없는 화면도 throw 되서 페이지에 메세지가 던져졌다.
Share article