• 업데이트 폼 호출시 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;
        }
        .. 생략..
    }

+ Recent posts