- 업데이트 폼 호출시 url로 다른 다른글 데이터 받아와지는것 수정
- 다른 사람 게시글 수정 api 요청시 업데이트되는 것 수정
요청받은 데이터의 user의 id(작성자)와 로그인된 user id가 다를 경우 에러 페이지 반환하도록 처리
controller
// 카페 수정 페이지 호출
@GetMapping("/cafes/updateForm")
public String getCafeUpdatePage(Model model, @RequestParam Long id, User loginUser){
.. 생략 ..
CafeUpdateRequestDto CafeUpdateRequestDto = cafeService.findCafeByIdForUpdateForm(id, loginUser);
if(CafeUpdateRequestDto.getStatusCode() == 500){
return "error/500";
}
model.addAttribute("cafeUpdateRequestDto", CafeUpdateRequestDto);
model.addAttribute("cafeId", id);
return "cafe/updateCafeForm";
}
// 카페 수정
@PostMapping("/cafes/{id}")
public String updateCafeInfo(@PathVariable Long id, @Valid CafeUpdateRequestDto requestDto, BindingResult result, User loginUser, Model model){
.. 생략 ..
int statusCode = cafeService.modifyCafe(id, requestDto, loginUser);
if(statusCode != 200){
return "error/500";
}
return "redirect:/cafes/allList";
}
service
# 수정 form에서 데이터 요청시
public CafeUpdateRequestDto findCafeByIdForUpdateForm(Long id, User loginUser) {
Cafe cafe = cafeRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException(CAFE_NOT_FOUND.getMessage()));
if(!cafe.getUser().getId().equals(loginUser.getId())){
return CafeUpdateRequestDto.builder().statusCode(500).build();
}
return CafeUpdateRequestDto.toDto(cafe);
}
# 수정 api 요청시
@Transactional
public int modifyCafe(Long id, CafeUpdateRequestDto requestDto, User loginUser) {
Cafe cafe = cafeRepository.getById(id);
if (!cafe.getUser().getId().equals(loginUser.getId())){
return 500;
}
.. 생략..
}
'프로그래밍 > JPA Project - sparta' 카테고리의 다른 글
SpringDataJPA정렬기능 심화! @Formula ★★★★★ (0) | 2022.07.27 |
---|---|
tip. 인텔리제이 Local History 기능 (0) | 2022.07.27 |
springboot 배포 timezone 동기화 문제 해결 방법 (0) | 2022.07.25 |
가비아 도메인 연결 - Route53 (0) | 2022.07.19 |
springboot multipart 파일 업로드 용량 초과 에러 해결방법 (0) | 2022.07.19 |