From 69e18737bedbb23e6704cd85f8bc6969b5fae62e Mon Sep 17 00:00:00 2001 From: priverg163 Date: Thu, 19 Sep 2024 17:28:37 +0900 Subject: [PATCH] Add :: exception handling for non-teacher users in method --- .../domain/device/service/DeviceServiceImpl.java | 5 ++++- .../domain/repository/user/UserRepository.java | 2 +- .../domain/user/service/user/UserServiceImpl.java | 15 ++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/keepgoing/keepserver/domain/device/service/DeviceServiceImpl.java b/src/main/java/com/keepgoing/keepserver/domain/device/service/DeviceServiceImpl.java index e19749a..e3018c2 100644 --- a/src/main/java/com/keepgoing/keepserver/domain/device/service/DeviceServiceImpl.java +++ b/src/main/java/com/keepgoing/keepserver/domain/device/service/DeviceServiceImpl.java @@ -11,6 +11,8 @@ import com.keepgoing.keepserver.global.common.BaseResponse; import com.keepgoing.keepserver.global.exception.device.DeviceError; import com.keepgoing.keepserver.global.exception.device.DeviceException; +import com.keepgoing.keepserver.global.exception.user.UserError; +import com.keepgoing.keepserver.global.exception.user.UserException; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Sort; import org.springframework.http.HttpStatus; @@ -48,7 +50,8 @@ public BaseResponse deviceRead(Long id) { @Override public BaseResponse deleteDevice(Long id, Authentication authentication) { User user = findUserByEmail(authentication.getName()); - userRepository.findByIdAndTeacherIsTrue(user.getId()); + userRepository.findByIdAndTeacherIsTrue(user.getId()) + .orElseThrow(() -> new UserException(UserError.USER_NOT_TEACHER)); deleteDeviceById(id); return new BaseResponse(HttpStatus.OK, "기기 삭제 성공"); } diff --git a/src/main/java/com/keepgoing/keepserver/domain/user/domain/repository/user/UserRepository.java b/src/main/java/com/keepgoing/keepserver/domain/user/domain/repository/user/UserRepository.java index f8551d5..c3a7676 100644 --- a/src/main/java/com/keepgoing/keepserver/domain/user/domain/repository/user/UserRepository.java +++ b/src/main/java/com/keepgoing/keepserver/domain/user/domain/repository/user/UserRepository.java @@ -14,5 +14,5 @@ public interface UserRepository extends JpaRepository, UserQueryRepo Optional findByEmailEquals(String email); List findUsersByIdIn(List ids); List findUsersByTeacherIs(boolean isTeacher); - User findByIdAndTeacherIsTrue(Long id); + Optional findByIdAndTeacherIsTrue(Long id); } \ No newline at end of file diff --git a/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java b/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java index a63738c..e667d1f 100644 --- a/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java +++ b/src/main/java/com/keepgoing/keepserver/domain/user/service/user/UserServiceImpl.java @@ -13,6 +13,8 @@ import com.keepgoing.keepserver.global.exception.BusinessException; import com.keepgoing.keepserver.global.exception.device.DeviceException; import com.keepgoing.keepserver.global.exception.error.ErrorCode; +import com.keepgoing.keepserver.global.exception.user.UserError; +import com.keepgoing.keepserver.global.exception.user.UserException; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.AuthenticationManager; @@ -63,6 +65,14 @@ public UserNoticesDto getNoticeByUser(Authentication authentication) { return userRepository.getNoticesById(ud.getId()); } + @Override + public User getTeacher(Authentication authentication) { + var ud = (UserDetailsImpl) authentication.getPrincipal(); + + return userRepository.findByIdAndTeacherIsTrue(ud.getId()) + .orElseThrow(() -> new UserException(UserError.USER_NOT_TEACHER)); + } + /* 인증 및 JWT 토큰 생성 */ public JwtResponse authenticateAndGenerateJWT(String email, String password) { Authentication authentication = authenticationManager.authenticate( @@ -106,9 +116,4 @@ private User findUserByEmail(String email) { private void updateUser(User user, UserInfoRequest request) { user.fixUserData(request.getEmail(), request.getName()); } - - public User getTeacher(Authentication authentication) { - var ud = (UserDetailsImpl) authentication.getPrincipal(); - return userRepository.findByIdAndTeacherIsTrue(ud.getId()); - } }