diff --git a/src/main/java/com/pickax/status/page/server/controller/ComponentController.java b/src/main/java/com/pickax/status/page/server/controller/ComponentController.java index 83a77b1..ca8720b 100644 --- a/src/main/java/com/pickax/status/page/server/controller/ComponentController.java +++ b/src/main/java/com/pickax/status/page/server/controller/ComponentController.java @@ -2,6 +2,8 @@ import java.util.List; +import com.pickax.status.page.server.util.SecurityUtil; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import com.pickax.status.page.server.dto.request.ComponentCreateRequestDto; import com.pickax.status.page.server.dto.reseponse.component.ComponentListResponseDto; @@ -28,9 +30,10 @@ public class ComponentController { private final ComponentService componentService; @PostMapping("/{siteId}/components") - public void createComponent(@PathVariable Long siteId, @RequestBody @Valid ComponentCreateRequestDto request) { - Long loggedInUserId = 1L; - this.componentService.createComponent(siteId, request, loggedInUserId); + public ResponseEntity createComponent(@PathVariable Long siteId, @RequestBody @Valid ComponentCreateRequestDto request) { + Long loggedInUserId = SecurityUtil.getCurrentUserId(); + this.componentService.createComponent(siteId, request, loggedInUserId); + return new ResponseEntity<>(HttpStatus.OK); } @GetMapping("/{siteId}/components/active") diff --git a/src/main/java/com/pickax/status/page/server/controller/SiteController.java b/src/main/java/com/pickax/status/page/server/controller/SiteController.java index 30afdfb..d28da48 100644 --- a/src/main/java/com/pickax/status/page/server/controller/SiteController.java +++ b/src/main/java/com/pickax/status/page/server/controller/SiteController.java @@ -1,6 +1,7 @@ package com.pickax.status.page.server.controller; import com.pickax.status.page.server.dto.reseponse.site.SiteResponseDto; +import com.pickax.status.page.server.util.SecurityUtil; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -44,9 +45,7 @@ public void verifySite(@PathVariable long siteId) { @GetMapping public ResponseEntity> sitesByUserId() { - // 로그인 기능이 없으므로 임시로 생성 - Long loggedInUserId = 1L; - + Long loggedInUserId = SecurityUtil.getCurrentUserId(); return ResponseEntity.ok(this.siteService.findAllByUserId(loggedInUserId)); } diff --git a/src/main/java/com/pickax/status/page/server/domain/model/Site.java b/src/main/java/com/pickax/status/page/server/domain/model/Site.java index 09e341b..6747785 100644 --- a/src/main/java/com/pickax/status/page/server/domain/model/Site.java +++ b/src/main/java/com/pickax/status/page/server/domain/model/Site.java @@ -87,10 +87,6 @@ public boolean hasValidatedOwnerByMetaTag() { return SiteRegistrationStatus.COMPLETED.equals(this.siteRegistrationStatus); } - public boolean ownerEqualsBy(Long requesterId) { - return this.getUser().getId().equals(requesterId); - } - public void cancel() { siteRegistrationStatus = SiteRegistrationStatus.CANCELED; } diff --git a/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryCustom.java b/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryCustom.java index e7d3042..9682105 100644 --- a/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryCustom.java +++ b/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryCustom.java @@ -10,4 +10,8 @@ public interface SiteRepositoryCustom { Optional getSiteResponse(long siteId); List findByUserId(Long userId); + + Optional findBySiteIdAndUserId(Long siteId, Long userId); + + List findAllByUserId(Long userId); } diff --git a/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryImpl.java b/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryImpl.java index f9e3446..584151a 100644 --- a/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryImpl.java +++ b/src/main/java/com/pickax/status/page/server/repository/SiteRepositoryImpl.java @@ -42,4 +42,23 @@ public List findByUserId(Long userId) { .where(site.user.id.eq(userId)) .fetch(); } + + @Override + public Optional findBySiteIdAndUserId(Long siteId, Long userId) { + return Optional.ofNullable(queryFactory + .selectFrom(site) + .where( + site.id.eq(siteId), + site.user.id.eq(userId) + ) + .fetchOne()); + } + + @Override + public List findAllByUserId(Long userId) { + return queryFactory + .selectFrom(site) + .where(site.user.id.eq(userId)) + .fetch(); + } } diff --git a/src/main/java/com/pickax/status/page/server/service/ComponentService.java b/src/main/java/com/pickax/status/page/server/service/ComponentService.java index e38f295..b1b39cd 100644 --- a/src/main/java/com/pickax/status/page/server/service/ComponentService.java +++ b/src/main/java/com/pickax/status/page/server/service/ComponentService.java @@ -31,11 +31,8 @@ public class ComponentService { @Transactional public void createComponent(Long siteId, ComponentCreateRequestDto request, Long loggedInUserId) { - Site site = this.siteRepository.findById(siteId).orElseThrow(() -> new EntityNotFoundException("존재하지 않는 사이트 입니다.")); - // 로그인 기능이 생기기 전까지 주석처리 합니다. -// if (!site.ownerEqualsBy(loggedInUserId)) { -// throw new IllegalArgumentException("해당 사이트의 정당한 소유자가 아닙니다."); -// } + Site site = this.siteRepository.findBySiteIdAndUserId(siteId, loggedInUserId) + .orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_SITE)); Component component = Component.create(request.getName(), request.getDescription(), diff --git a/src/main/java/com/pickax/status/page/server/service/SiteService.java b/src/main/java/com/pickax/status/page/server/service/SiteService.java index 163e2f9..8a1ea6a 100644 --- a/src/main/java/com/pickax/status/page/server/service/SiteService.java +++ b/src/main/java/com/pickax/status/page/server/service/SiteService.java @@ -129,15 +129,8 @@ private void checkMetaTag(Site site, MetaTag metaTag) { throw new CustomException(ErrorCode.INVALID_META_TAG); } - /** - * TODO. 로그인 API 붙일 때 유저아이디로 조회 - * - * @param loggedInUserId - * @return - */ public List findAllByUserId(Long loggedInUserId) { - // List sitesFromRepository = this.siteRepository.findAllByUserId(loggedInUserId); - List sitesFromRepository = this.siteRepository.findAll(); + List sitesFromRepository = this.siteRepository.findAllByUserId(loggedInUserId); List sites = new ArrayList<>(); sitesFromRepository.forEach(