diff --git a/purithm/src/main/java/com/example/purithm/domain/user/repository/UserRepository.java b/purithm/src/main/java/com/example/purithm/domain/user/repository/UserRepository.java index a505c1e..b1b7dc2 100644 --- a/purithm/src/main/java/com/example/purithm/domain/user/repository/UserRepository.java +++ b/purithm/src/main/java/com/example/purithm/domain/user/repository/UserRepository.java @@ -1,5 +1,7 @@ package com.example.purithm.domain.user.repository; +import java.util.Optional; + import com.example.purithm.domain.user.entity.Provider; import com.example.purithm.domain.user.entity.User; import org.springframework.data.jpa.repository.JpaRepository; @@ -19,4 +21,6 @@ public interface UserRepository extends JpaRepository { int countLogsByUserId(@Param("userId") Long userId); boolean existsByProviderId(String id); + + Optional findByProviderId(String id); } diff --git a/purithm/src/main/java/com/example/purithm/domain/user/service/UserService.java b/purithm/src/main/java/com/example/purithm/domain/user/service/UserService.java index caf17cb..ed070c3 100644 --- a/purithm/src/main/java/com/example/purithm/domain/user/service/UserService.java +++ b/purithm/src/main/java/com/example/purithm/domain/user/service/UserService.java @@ -98,4 +98,14 @@ public void updateProfile(UserInfoRequestDto userInfo, Long userId) { user.updateProfile(userInfo); userRepository.save(user); } + + public Long getUserId(String id, String password) { + User user = userRepository.findByProviderId(id) + .orElseThrow(() -> CustomException.of(Error.NOT_FOUND_ERROR)); + + if (!user.getPassword().equals(password)) { + throw CustomException.of(Error.INVALID_ID_PASSWORD); + } + return user.getId(); + } } diff --git a/purithm/src/main/java/com/example/purithm/global/auth/controller/AuthController.java b/purithm/src/main/java/com/example/purithm/global/auth/controller/AuthController.java index 1fa043b..cdaf628 100644 --- a/purithm/src/main/java/com/example/purithm/global/auth/controller/AuthController.java +++ b/purithm/src/main/java/com/example/purithm/global/auth/controller/AuthController.java @@ -40,7 +40,12 @@ public class AuthController implements AuthControllerDocs { @PostMapping("/login") public SuccessResponse login(LoginRequestDto loginRequestDto) { + Long id = userService.getUserId(loginRequestDto.id(), passwordEncoder.encode(loginRequestDto.password())); + String jwtToken = jwtUtil.createJwt(id, 60 * 60 * 60 * 1000L); + LoginDto loginDto = LoginDto.builder() + .accessToken(jwtToken).build(); + return SuccessResponse.of(loginDto); } @PostMapping("/signup") diff --git a/purithm/src/main/java/com/example/purithm/global/exception/Error.java b/purithm/src/main/java/com/example/purithm/global/exception/Error.java index c9236e9..898d6c4 100644 --- a/purithm/src/main/java/com/example/purithm/global/exception/Error.java +++ b/purithm/src/main/java/com/example/purithm/global/exception/Error.java @@ -16,6 +16,7 @@ public enum Error { /* 401 */ INVALID_TOKEN_ERROR(HttpStatus.UNAUTHORIZED, 40100, "유효하지 않은 토큰입니다."), EXPIRED_TOKEN_ERROR(HttpStatus.UNAUTHORIZED, 40101, "만료된 토큰입니다."), + INVALID_ID_PASSWORD(HttpStatus.UNAUTHORIZED, 40102, "이메일/비밀번호가 적절하지 않습니다."), /* 403 */ NOT_AGREED_TERM(HttpStatus.FORBIDDEN, 40300, "이용약관 동의가 필요합니다"),