diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index 802efd4..b051b46 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -1,9 +1,6 @@ name: CI Workflow on: - push: - branches: - - '**' pull_request: branches: - '**' diff --git a/src/main/java/com/linku/backend/domain/user/service/UserService.java b/src/main/java/com/linku/backend/domain/user/service/UserService.java index 6d56947..9d93353 100644 --- a/src/main/java/com/linku/backend/domain/user/service/UserService.java +++ b/src/main/java/com/linku/backend/domain/user/service/UserService.java @@ -3,6 +3,8 @@ import com.linku.backend.domain.oauth.dto.GoogleUserInfo; import com.linku.backend.domain.user.User; import com.linku.backend.domain.user.repository.UserRepository; +import com.linku.backend.global.auth.dto.AuthTokenResponse; +import com.linku.backend.global.auth.dto.UserInfoResponse; import com.linku.backend.global.exception.LinkuException; import com.linku.backend.global.jwt.JwtTokenService; import lombok.RequiredArgsConstructor; @@ -12,7 +14,6 @@ import java.util.Optional; -import static com.linku.backend.global.response.ResponseCode.KUMAIL_ALREADY; import static com.linku.backend.global.response.ResponseCode.USER_NOT_FOUND; @Slf4j @@ -34,18 +35,12 @@ public User getUserById(Long UserId) { .orElseThrow(() -> LinkuException.of(USER_NOT_FOUND)); } - public void findByKuMail(String kuMail) { - log.debug("[findByKuMail] 건국대학교 메일 = {}", kuMail); - userRepository.findByKuMail(kuMail) - .ifPresent(user -> { - throw LinkuException.of(KUMAIL_ALREADY); - }); - } - @Transactional - public void updateInfo(String kuMail, String guestToken) { + public UserInfoResponse updateInfo(String kuMail, String guestToken) { Long userId = jwtTokenService.extractUserIdByGuestToken(guestToken); User user = getUserById(userId); user.updateInfo(kuMail); + AuthTokenResponse response = jwtTokenService.generateAuthToken(user); + return UserInfoResponse.from(user, response); } } diff --git a/src/main/java/com/linku/backend/global/auth/controller/AuthController.java b/src/main/java/com/linku/backend/global/auth/controller/AuthController.java index ed2af35..0dc1e97 100644 --- a/src/main/java/com/linku/backend/global/auth/controller/AuthController.java +++ b/src/main/java/com/linku/backend/global/auth/controller/AuthController.java @@ -4,6 +4,7 @@ import com.linku.backend.domain.user.service.UserService; import com.linku.backend.global.auth.dto.KUMailRequest; import com.linku.backend.global.auth.dto.KUMailVerifyRequest; +import com.linku.backend.global.auth.dto.UserInfoResponse; import com.linku.backend.global.auth.service.MailService; import com.linku.backend.global.jwt.JwtTokenService; import com.linku.backend.global.response.BaseResponse; @@ -25,18 +26,17 @@ public class AuthController { @PostMapping("/send-code") public BaseResponse sendAuthCode(@Validated @RequestBody KUMailRequest request) { log.debug("[sendMail] 사용자 메일 = {}", request.kuMail()); - userService.findByKuMail(request.kuMail()); mailService.sendAuthMail(request.kuMail()); return BaseResponse.of(ResponseCode.SUCCESS, null); } @PostMapping("/verify-code") - public BaseResponse verifyAuthCode(@Validated @RequestBody KUMailVerifyRequest request, + public BaseResponse verifyAuthCode(@Validated @RequestBody KUMailVerifyRequest request, @RequestHeader("Authorization") String guestToken) { log.debug("[verify] 사용자 메일 = {}, 인증코드 = {}", request.kuMail(), request.authCode()); mailService.verifyAuthCode(request.kuMail(), request.authCode()); - userService.updateInfo(request.kuMail(), guestToken); - return BaseResponse.of(ResponseCode.SUCCESS, null); + UserInfoResponse response = userService.updateInfo(request.kuMail(), guestToken); + return BaseResponse.of(ResponseCode.SUCCESS, response); } } diff --git a/src/main/java/com/linku/backend/global/auth/dto/UserInfoResponse.java b/src/main/java/com/linku/backend/global/auth/dto/UserInfoResponse.java new file mode 100644 index 0000000..cac4f92 --- /dev/null +++ b/src/main/java/com/linku/backend/global/auth/dto/UserInfoResponse.java @@ -0,0 +1,21 @@ +package com.linku.backend.global.auth.dto; + +import com.linku.backend.domain.user.User; + +public record UserInfoResponse( + String accessToken, + String refreshToken, + Long userId, + String name, + String kuMail +) { + public static UserInfoResponse from(User user, AuthTokenResponse authTokenResponse) { + return new UserInfoResponse( + authTokenResponse.accessToken(), + authTokenResponse.refreshToken(), + user.getUserId(), + user.getName(), + user.getKuMail() + ); + } +} diff --git a/src/main/java/com/linku/backend/global/config/SecurityConfig.java b/src/main/java/com/linku/backend/global/config/SecurityConfig.java index 7479813..587c9ad 100644 --- a/src/main/java/com/linku/backend/global/config/SecurityConfig.java +++ b/src/main/java/com/linku/backend/global/config/SecurityConfig.java @@ -52,10 +52,8 @@ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Excepti .authorizeHttpRequests(auth -> auth .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() //preflight 요청은 Auth token 없으므로 항상 permit .requestMatchers( - "/auth/send-code", - "/auth/verify-code" - ).hasAuthority("ROLE_GUEST") - .requestMatchers( + "/api/auth/send-code", + "/api/auth/verify-code", "/api/example/to-be-authenticated", "/api/login/oauth2/code/google", "/api/oauth2/google/login" diff --git a/src/main/java/com/linku/backend/global/jwt/JwtAuthenticationFilter.java b/src/main/java/com/linku/backend/global/jwt/JwtAuthenticationFilter.java index 19ee8b6..fb409b0 100644 --- a/src/main/java/com/linku/backend/global/jwt/JwtAuthenticationFilter.java +++ b/src/main/java/com/linku/backend/global/jwt/JwtAuthenticationFilter.java @@ -59,11 +59,7 @@ private String resolveToken(HttpServletRequest request) { private String resolveTokenType(HttpServletRequest request) { String uri = request.getRequestURI(); - // 게스트 토큰으로 접근해야 하는 엔드포인트들 - // TODO: 실제 게스트 전용 엔드포인트 패턴에 맞게 수정하세요. - if (uri.startsWith("/api/auth/guest") - || uri.startsWith("/api/auth/send-code") - || uri.startsWith("/api/auth/verify-code")) { + if (uri.contains("/api/auth/send-code") || uri.contains("/api/auth/verify-code")) { return JwtTokenService.GUEST; }