From 557c6db72798e7af178e38cc2c24957fff70ca6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=99=8D=EB=B2=94?= Date: Fri, 13 Dec 2024 12:52:26 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Security=20url=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 코드 순서 수정, 403 forbidden 에러 해결 Resolves: #12 --- refrigerator/.idea/dataSources.xml | 14 +++++ refrigerator/.idea/modules.xml | 8 +++ .../.idea/modules/refrigerator.main.iml | 8 +++ .../refrigerator/config/SecurityConfig.java | 2 +- .../ingredient/IngredientController.java | 32 ++++------ .../service/ingredient/IngredientService.java | 6 +- .../ingredient/IngredientServiceImpl.java | 63 +++++++++---------- 7 files changed, 78 insertions(+), 55 deletions(-) create mode 100644 refrigerator/.idea/modules.xml create mode 100644 refrigerator/.idea/modules/refrigerator.main.iml diff --git a/refrigerator/.idea/dataSources.xml b/refrigerator/.idea/dataSources.xml index acfaa41..f038683 100644 --- a/refrigerator/.idea/dataSources.xml +++ b/refrigerator/.idea/dataSources.xml @@ -13,5 +13,19 @@ $ProjectFileDir$ + + mysql.8 + true + true + $PROJECT_DIR$/src/main/resources/application.yml + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306/refrigerator + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/refrigerator/.idea/modules.xml b/refrigerator/.idea/modules.xml new file mode 100644 index 0000000..bdc72c3 --- /dev/null +++ b/refrigerator/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/refrigerator/.idea/modules/refrigerator.main.iml b/refrigerator/.idea/modules/refrigerator.main.iml new file mode 100644 index 0000000..afc1871 --- /dev/null +++ b/refrigerator/.idea/modules/refrigerator.main.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/refrigerator/src/main/java/moja/refrigerator/config/SecurityConfig.java b/refrigerator/src/main/java/moja/refrigerator/config/SecurityConfig.java index 17e66a6..2970b11 100644 --- a/refrigerator/src/main/java/moja/refrigerator/config/SecurityConfig.java +++ b/refrigerator/src/main/java/moja/refrigerator/config/SecurityConfig.java @@ -34,7 +34,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // URL 별 접근 권한 설정 http .authorizeHttpRequests((auth) -> auth - .requestMatchers("/login", "/", "/join").permitAll() // 이 경로들은 모두 접근 가능 + .requestMatchers("/login", "/", "/join", "/ingredient").permitAll() // 이 경로들은 모두 접근 가능 .requestMatchers("/admin").hasRole("ADMIN") // admin 경로는 ADMIN 역할을 가진 사용자만 .anyRequest().authenticated()); // 나머지는 인증된 사용자만 diff --git a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java index 3d9577f..19bf7af 100644 --- a/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java +++ b/refrigerator/src/main/java/moja/refrigerator/controller/ingredient/IngredientController.java @@ -3,18 +3,12 @@ import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; +import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; import moja.refrigerator.service.ingredient.IngredientService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; -import moja.refrigerator.service.ingredient.IngredientService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -36,16 +30,6 @@ public void createIngredient(@RequestBody IngredientCreateRequest request) { ingredientService.createIngredient(request); } - - @PostMapping("/bookmark/regist") - public ResponseEntity createIngredientBookmark( - @RequestBody RequestRegistIngredientBookmark requestBookmark - ) { - ResponseRegistIngredientBookmark responseBookmark = - ingredientService.createIngredientBookmark(requestBookmark); - - return ResponseEntity.status(HttpStatus.CREATED).body(responseBookmark); - // 재료 조회 @GetMapping public List getIngredient() { @@ -61,8 +45,18 @@ public void updateIngredient(@RequestBody IngredientUpdateRequest request) { // 재료 삭제 @DeleteMapping - public void deleteIngredient(@RequestParam long ingredientManagementPK) { - ingredientService.deleteIngredient(ingredientManagementPK); + public void deleteIngredient(@RequestParam long ingredientManagementPk) { + ingredientService.deleteIngredient(ingredientManagementPk); + } + + @PostMapping("/bookmark/regist") + public ResponseEntity createIngredientBookmark( + @RequestBody RequestRegistIngredientBookmark requestBookmark + ) { + ResponseRegistIngredientBookmark responseBookmark = + ingredientService.createIngredientBookmark(requestBookmark); + + return ResponseEntity.status(HttpStatus.CREATED).body(responseBookmark); } } diff --git a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java index ee40007..61ba28f 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientService.java @@ -2,11 +2,11 @@ import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; +import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; + import java.util.List; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; public interface IngredientService { // void createIngredient(IngredientCreateRequest request); @@ -17,5 +17,5 @@ public interface IngredientService { List getIngredient(); // 재료 조회 메서드 void updateIngredient(IngredientUpdateRequest request); - void deleteIngredient(long ingredientManagementPK); + void deleteIngredient(long ingredientManagementPk); } diff --git a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java index eb1391a..5b7b9e1 100644 --- a/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java +++ b/refrigerator/src/main/java/moja/refrigerator/service/ingredient/IngredientServiceImpl.java @@ -1,22 +1,21 @@ package moja.refrigerator.service.ingredient; +import jakarta.persistence.EntityNotFoundException; +import moja.refrigerator.aggregate.ingredient.IngredientBookmark; import moja.refrigerator.aggregate.ingredient.IngredientCategory; import moja.refrigerator.aggregate.ingredient.IngredientManagement; import moja.refrigerator.aggregate.ingredient.IngredientStorage; +import moja.refrigerator.aggregate.user.User; import moja.refrigerator.dto.ingredient.request.IngredientCreateRequest; -import moja.refrigerator.repository.ingredient.IngredientCategoryRepository; import moja.refrigerator.dto.ingredient.request.IngredientUpdateRequest; -import moja.refrigerator.dto.ingredient.response.IngredientResponse; -import moja.refrigerator.repository.ingredient.IngredientManagementRepository; -import moja.refrigerator.repository.ingredient.IngredientStorageRepository; -import jakarta.persistence.EntityNotFoundException; -import moja.refrigerator.aggregate.ingredient.IngredientBookmark; -import moja.refrigerator.aggregate.user.User; import moja.refrigerator.dto.ingredient.request.RequestRegistIngredientBookmark; +import moja.refrigerator.dto.ingredient.response.IngredientResponse; import moja.refrigerator.dto.ingredient.response.ResponseRegistIngredientBookmark; import moja.refrigerator.repository.ingredient.IngredientBookmarkRepository; +import moja.refrigerator.repository.ingredient.IngredientCategoryRepository; +import moja.refrigerator.repository.ingredient.IngredientManagementRepository; +import moja.refrigerator.repository.ingredient.IngredientStorageRepository; import moja.refrigerator.repository.user.UserRepository; - import org.modelmapper.ModelMapper; import org.modelmapper.convention.MatchingStrategies; import org.springframework.beans.factory.annotation.Autowired; @@ -69,28 +68,6 @@ public void createIngredient(IngredientCreateRequest request) { ingredientManagementRepository.save(ingredient); } - @Override - - public ResponseRegistIngredientBookmark createIngredientBookmark(RequestRegistIngredientBookmark requestBookmark) { - User user = userRepository.findById(requestBookmark.getUserPk()) - .orElseThrow(() -> new EntityNotFoundException("회원을 찾을 수 없습니다.")); - - IngredientManagement ingredientManagement = ingredientManagementRepository - .findById(requestBookmark.getIngredientPk()) - .orElseThrow(() -> new EntityNotFoundException("재료를 찾을 수 없습니다.")); - - IngredientBookmark ingredientBookmark = new IngredientBookmark(); - - ingredientBookmark.setUser(user); - ingredientBookmark.setIngredientManagement(ingredientManagement); - - ingredientBookmarkRepository.save(ingredientBookmark); - - mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); - - return mapper.map(ingredientBookmark, ResponseRegistIngredientBookmark.class); - } - @Transactional(readOnly = true) public List getIngredient() { List ingredients = ingredientManagementRepository.findAll(); @@ -128,12 +105,34 @@ public void updateIngredient(IngredientUpdateRequest request) { @Override @Transactional - public void deleteIngredient(long ingredientManagementPK) { + public void deleteIngredient(long ingredientManagementPk) { IngredientManagement ingredient = ingredientManagementRepository - .findById(ingredientManagementPK) + .findById(ingredientManagementPk) .orElseThrow(() -> new IllegalArgumentException("삭제할 재료를 찾을 수 없습니다.")); ingredientManagementRepository.delete(ingredient); } + @Override + public ResponseRegistIngredientBookmark createIngredientBookmark(RequestRegistIngredientBookmark requestBookmark) { + User user = userRepository.findById(requestBookmark.getUserPk()) + .orElseThrow(() -> new EntityNotFoundException("회원을 찾을 수 없습니다.")); + + IngredientManagement ingredientManagement = ingredientManagementRepository + .findById(requestBookmark.getIngredientPk()) + .orElseThrow(() -> new EntityNotFoundException("재료를 찾을 수 없습니다.")); + + IngredientBookmark ingredientBookmark = new IngredientBookmark(); + + ingredientBookmark.setUser(user); + ingredientBookmark.setIngredientManagement(ingredientManagement); + + ingredientBookmarkRepository.save(ingredientBookmark); + + mapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + + return mapper.map(ingredientBookmark, ResponseRegistIngredientBookmark.class); + } + + }