diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml
index 3b2005c4..74b5830f 100644
--- a/.github/workflows/backend-ci.yml
+++ b/.github/workflows/backend-ci.yml
@@ -18,12 +18,6 @@ jobs:
with:
java-version: 17
distribution: 'zulu'
- - name: Cache SonarCloud packages
- uses: actions/cache@v3
- with:
- path: ~/.sonar/cache
- key: ${{ runner.os }}-sonar
- restore-keys: ${{ runner.os }}-sonar
- name: Gradle Caching
uses: actions/cache@v3
with:
@@ -36,8 +30,7 @@ jobs:
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- run: ./gradlew test testCodeCoverageReport sonar --info
+ run: ./gradlew build
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v1
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationNumberDao.java b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/CertificationNumberRepository.java
similarity index 57%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationNumberDao.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/certificate/CertificationNumberRepository.java
index 8716e037..b5c2614f 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationNumberDao.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/CertificationNumberRepository.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.auth.certification;
+package cmc.mellyserver.auth.certificate;
import static cmc.mellyserver.mail.EmailConstants.*;
@@ -11,17 +11,14 @@
@Repository
@RequiredArgsConstructor
-class EmailCertificationNumberDao implements CertificationNumberDao {
+class CertificationNumberRepository {
private final StringRedisTemplate redisTemplate;
- /**
- * 이메일 인증 번호를 Redis에 저장합니다.
- *
- * 인증번호 유효기간은 3분으로 설정했습니다.
+ /*
+ 인증번호 유효기간 : 3분
*/
- @Override
- public void saveCertificationNumber(String email, String certificationNumber) {
+ public void save(String email, String certificationNumber) {
redisTemplate.opsForValue()
.set(PREFIX_CERTIFICATION + email, certificationNumber,
@@ -29,18 +26,15 @@ public void saveCertificationNumber(String email, String certificationNumber) {
}
- @Override
- public String getCertificationNumber(String email) {
+ public String get(String email) {
return redisTemplate.opsForValue().get(PREFIX_CERTIFICATION + email);
}
- @Override
- public void removeCertificationNumber(String email) {
+ public void remove(String email) {
redisTemplate.delete(PREFIX_CERTIFICATION + email);
}
- @Override
- public boolean hasKey(String email) {
+ public Boolean hasKey(String email) {
return redisTemplate.hasKey(PREFIX_CERTIFICATION + email);
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/CertificationService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/CertificationService.java
similarity index 56%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/certification/CertificationService.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/certificate/CertificationService.java
index 13f8977a..4edb7958 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/CertificationService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/CertificationService.java
@@ -1,4 +1,6 @@
-package cmc.mellyserver.auth.certification;
+package cmc.mellyserver.auth.certificate;
+
+import cmc.mellyserver.auth.dto.request.EmailCertificationRequest;
public interface CertificationService {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/EmailCertificationService.java
similarity index 59%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationService.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/certificate/EmailCertificationService.java
index 943589be..9ba5fbb6 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/EmailCertificationService.java
@@ -1,20 +1,21 @@
-package cmc.mellyserver.auth.certification;
+package cmc.mellyserver.auth.certificate;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Repository;
-import cmc.mellyserver.common.event.SignupCertificationEvent;
+import cmc.mellyserver.auth.dto.request.EmailCertificationRequest;
+import cmc.mellyserver.common.event.CertificationCompletedEvent;
import lombok.RequiredArgsConstructor;
-@RequiredArgsConstructor
@Profile({"local", "prod"})
@Repository
+@RequiredArgsConstructor
class EmailCertificationService implements CertificationService {
- private final ApplicationEventPublisher applicationEventPublisher;
+ private final CertificationNumberRepository certificationNumberRepository;
- private final CertificationNumberDao certificationNumberDao;
+ private final ApplicationEventPublisher applicationEventPublisher;
/**
* 인증 이메일 전송 기능
@@ -22,9 +23,9 @@ class EmailCertificationService implements CertificationService {
public void sendCertification(String email) {
String certificationNumber = RandomNumberGenerator.makeRandomNumber();
+ certificationNumberRepository.save(email, certificationNumber);
+ applicationEventPublisher.publishEvent(new CertificationCompletedEvent(email, certificationNumber));
- applicationEventPublisher.publishEvent(new SignupCertificationEvent(email, certificationNumber));
- certificationNumberDao.saveCertificationNumber(email, certificationNumber);
}
// 인증번호 일치 여부 확인
@@ -35,14 +36,14 @@ public void verify(EmailCertificationRequest requestDto) {
}
// 인증 후 DB에서 인증번호 삭제
- certificationNumberDao.removeCertificationNumber(requestDto.getEmail());
+ certificationNumberRepository.remove(requestDto.email());
}
// 인증번호 일치 여부 확인 내부 로직
private boolean isVerify(EmailCertificationRequest requestDto) {
- return !(certificationNumberDao.hasKey(requestDto.getEmail())
- && certificationNumberDao.getCertificationNumber(requestDto.getEmail())
- .equals(requestDto.getCertificationNumber()));
+ return !(certificationNumberRepository.hasKey(requestDto.email())
+ && certificationNumberRepository.get(requestDto.email())
+ .equals(requestDto.certificationNumber()));
}
}
\ No newline at end of file
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/RandomNumberGenerator.java b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/RandomNumberGenerator.java
similarity index 86%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/certification/RandomNumberGenerator.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/certificate/RandomNumberGenerator.java
index c2fed3a6..99f36df9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/RandomNumberGenerator.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/certificate/RandomNumberGenerator.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.auth.certification;
+package cmc.mellyserver.auth.certificate;
import java.util.Random;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/CertificationNumberDao.java b/core/core-api/src/main/java/cmc/mellyserver/auth/certification/CertificationNumberDao.java
deleted file mode 100644
index 9cbfb8c7..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/CertificationNumberDao.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cmc.mellyserver.auth.certification;
-
-public interface CertificationNumberDao {
-
- void saveCertificationNumber(String email, String certificationNumber);
-
- String getCertificationNumber(String email);
-
- void removeCertificationNumber(String email);
-
- boolean hasKey(String email);
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationRequest.java
deleted file mode 100644
index 29fa386e..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/certification/EmailCertificationRequest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cmc.mellyserver.auth.certification;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class EmailCertificationRequest {
-
- private String email;
-
- private String certificationNumber;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/JwtExceptionFilter.java b/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/JwtExceptionFilter.java
index d7a209d4..820f21b9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/JwtExceptionFilter.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/JwtExceptionFilter.java
@@ -3,6 +3,7 @@
import java.io.IOException;
import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
@@ -24,40 +25,34 @@ public class JwtExceptionFilter extends OncePerRequestFilter {
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
try {
-
chain.doFilter(request, response);
-
} catch (JwtException ex) {
-
- setExpiredErrorResponse(request, response, ex);
-
+ setExpiredErrorResponse(response);
} catch (LogoutOrWithdrawException ex) {
- setLogoutOrWithdrawErrorResponse(request, response, ex);
+ setLogoutOrWithdrawErrorResponse(response);
}
}
- public void setExpiredErrorResponse(HttpServletRequest request, HttpServletResponse response, Throwable ex)
- throws IOException {
+ private void setExpiredErrorResponse(HttpServletResponse response) throws IOException {
- response.setContentType("application/json; charset=UTF-8");
+ response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setStatus(HttpStatus.OK.value());
ErrorResponse error = ErrorResponse.of(ErrorCode.EXPIRED_TOKEN);
- final ObjectMapper mapper = new ObjectMapper();
+ ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getOutputStream(), error);
}
- public void setLogoutOrWithdrawErrorResponse(HttpServletRequest request, HttpServletResponse response, Throwable ex)
- throws IOException {
+ private void setLogoutOrWithdrawErrorResponse(HttpServletResponse response) throws IOException {
- response.setContentType("application/json; charset=UTF-8");
+ response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setStatus(HttpStatus.OK.value());
ErrorResponse error = ErrorResponse.of(ErrorCode.LOGOUT_WITHDRAW_USER);
- final ObjectMapper mapper = new ObjectMapper();
+ ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getOutputStream(), error);
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/TokenAuthenticationFilter.java b/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/TokenAuthenticationFilter.java
index ad6e1e15..bfde8188 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/TokenAuthenticationFilter.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/common/filter/TokenAuthenticationFilter.java
@@ -46,12 +46,12 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
filterChain.doFilter(request, response);
}
- private void checkLogoutOrWithdrawUser(String jwt) {
+ private void checkLogoutOrWithdrawUser(String accessToken) {
ValueOperations valueOperations = redisTemplate.opsForValue();
- if (!Objects.isNull(valueOperations.get(jwt))) {
- throw new LogoutOrWithdrawException("이미 로그아웃하거나 탈퇴한 유저 입니다.");
+ if (Objects.nonNull(valueOperations.get(accessToken))) {
+ throw new LogoutOrWithdrawException("already Logout or withdraw user");
}
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/CurrentUser.java b/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/CurrentUser.java
similarity index 83%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/CurrentUser.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/CurrentUser.java
index e55bde51..f10a09ec 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/CurrentUser.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/CurrentUser.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.auth.controller.dto.common;
+package cmc.mellyserver.auth.common.resolver;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/LoginUser.java b/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/LoginUser.java
new file mode 100644
index 00000000..c77c2edb
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/LoginUser.java
@@ -0,0 +1,15 @@
+package cmc.mellyserver.auth.common.resolver;
+
+public class LoginUser {
+
+ private final Long userId;
+
+ public LoginUser(Long userId) {
+ this.userId = userId;
+ }
+
+ public Long getId() {
+ return userId;
+ }
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/resolver/LoginUserIdArgumentResolver.java b/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/LoginUserIdArgumentResolver.java
similarity index 83%
rename from core/core-api/src/main/java/cmc/mellyserver/common/resolver/LoginUserIdArgumentResolver.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/LoginUserIdArgumentResolver.java
index 01f57a67..8658bd00 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/common/resolver/LoginUserIdArgumentResolver.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/common/resolver/LoginUserIdArgumentResolver.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.common.resolver;
+package cmc.mellyserver.auth.common.resolver;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
@@ -7,8 +7,6 @@
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
import cmc.mellyserver.auth.token.TokenProvider;
import cmc.mellyserver.common.util.HeaderUtil;
import jakarta.servlet.http.HttpServletRequest;
@@ -34,8 +32,8 @@ public Object resolveArgument(final MethodParameter parameter, final ModelAndVie
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
String accessToken = HeaderUtil.getAccessToken(request);
- Long id = tokenProvider.extractUserId(accessToken);
- return new LoginUser(id);
+ Long userId = tokenProvider.extractUserId(accessToken);
+ return new LoginUser(userId);
}
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/config/RedisConstants.java b/core/core-api/src/main/java/cmc/mellyserver/auth/config/RedisConstants.java
deleted file mode 100644
index a5574495..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/config/RedisConstants.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package cmc.mellyserver.auth.config;
-
-public abstract class RedisConstants {
-
- public static final String REFRESH_TOKEN_PREFIX = "rft:user-id:";
-
- public static final String ACCESS_TOKEN_BLACKLIST = "blackList";
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/AuthController.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/AuthController.java
index 1e8aef13..b39f9996 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/AuthController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/AuthController.java
@@ -10,29 +10,27 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cmc.mellyserver.auth.AuthService;
-import cmc.mellyserver.auth.OAuthService;
-import cmc.mellyserver.auth.certification.CertificationService;
-import cmc.mellyserver.auth.certification.EmailCertificationRequest;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.certificate.CertificationService;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.auth.controller.dto.request.AuthLoginRequest;
-import cmc.mellyserver.auth.controller.dto.request.CommonSignupRequest;
+import cmc.mellyserver.auth.controller.dto.request.ChangePasswordRequest;
import cmc.mellyserver.auth.controller.dto.request.OAuthLoginRequest;
import cmc.mellyserver.auth.controller.dto.request.OAuthSignupRequest;
import cmc.mellyserver.auth.controller.dto.request.ReIssueAccessTokenRequest;
-import cmc.mellyserver.auth.controller.dto.response.OAuthResponseDto;
-import cmc.mellyserver.auth.dto.request.ChangePasswordRequest;
+import cmc.mellyserver.auth.controller.dto.request.SignupRequest;
+import cmc.mellyserver.auth.dto.request.EmailCertificationRequest;
+import cmc.mellyserver.auth.dto.response.OAuthResponseDto;
import cmc.mellyserver.auth.dto.response.TokenResponseDto;
+import cmc.mellyserver.auth.service.AuthService;
+import cmc.mellyserver.auth.service.OAuthService;
import cmc.mellyserver.common.util.HeaderUtil;
import cmc.mellyserver.support.response.ApiResponse;
import cmc.mellyserver.support.response.SuccessCode;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-@Slf4j
@RestController
@RequestMapping("/api/auth")
@RequiredArgsConstructor
@@ -63,7 +61,7 @@ public ResponseEntity> socialSignup(
// 이메일 회원 가입
@PostMapping("/signup")
- public ResponseEntity> signup(@Valid CommonSignupRequest commonSignupRequest) {
+ public ResponseEntity> signup(@Valid SignupRequest commonSignupRequest) {
TokenResponseDto signupToken = authService.signup(commonSignupRequest.toDto());
return ApiResponse.success(SuccessCode.INSERT_SUCCESS, signupToken);
@@ -81,7 +79,7 @@ public ResponseEntity> login(@Valid @RequestBody A
@PostMapping("/email-certification/sends")
public ResponseEntity> sendEmailCertification(@RequestBody EmailCertificationRequest requestDto) {
- certificationService.sendCertification(requestDto.getEmail());
+ certificationService.sendCertification(requestDto.email());
return ApiResponse.success(SuccessCode.INSERT_SUCCESS);
}
@@ -90,7 +88,7 @@ public ResponseEntity> sendEmailCertification(@RequestBody Ema
public ResponseEntity> resendEmailCertification(
@RequestBody EmailCertificationRequest requestDto) {
- certificationService.sendCertification(requestDto.getEmail());
+ certificationService.sendCertification(requestDto.email());
return ApiResponse.success(SuccessCode.INSERT_SUCCESS);
}
@@ -153,7 +151,7 @@ public ResponseEntity> generateAccessToken(
@RequestBody ReIssueAccessTokenRequest reIssueAccessTokenRequest) {
TokenResponseDto tokenResponseDto = authService
- .reIssueAccessTokenAndRefreshToken(reIssueAccessTokenRequest.getRefreshToken());
+ .reIssueAccessTokenAndRefreshToken(reIssueAccessTokenRequest.refreshToken());
return ApiResponse.success(SuccessCode.INSERT_SUCCESS, tokenResponseDto);
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/AuthmeWrappingDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/AuthmeWrappingDto.java
deleted file mode 100644
index 2c984654..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/AuthmeWrappingDto.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.common;
-
-import cmc.mellyserver.auth.controller.dto.response.AccessTokenUserData;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class AuthmeWrappingDto {
-
- private AccessTokenUserData user;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/LoginUser.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/LoginUser.java
deleted file mode 100644
index 712d094c..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/LoginUser.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.common;
-
-public class LoginUser {
-
- private Long id;
-
- private LoginUser() {
- }
-
- public LoginUser(final Long id) {
- this.id = id;
- }
-
- public Long getId() {
- return id;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/UserDataWrappingDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/UserDataWrappingDto.java
deleted file mode 100644
index 36ab6e46..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/common/UserDataWrappingDto.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.common;
-
-import cmc.mellyserver.auth.controller.dto.response.AccessTokenUserData;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-@AllArgsConstructor
-public class UserDataWrappingDto {
-
- private AccessTokenUserData user;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthLoginRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthLoginRequest.java
index f25f03f2..9b99affa 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthLoginRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthLoginRequest.java
@@ -2,24 +2,15 @@
import cmc.mellyserver.auth.dto.request.AuthLoginRequestDto;
import jakarta.validation.constraints.Email;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-public class AuthLoginRequest {
+public record AuthLoginRequest(
@Email(message = "이메일 형식을 지켜야 합니다")
- private String email;
-
- private String password;
+ String email,
- private String fcmToken;
+ String password,
- public AuthLoginRequest(String email, String password) {
- this.email = email;
- this.password = password;
- }
+ String fcmToken
+) {
public AuthLoginRequestDto toDto() {
return new AuthLoginRequestDto(email, password, fcmToken);
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthRequestForOAuthSignup.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthRequestForOAuthSignup.java
deleted file mode 100644
index 95ed8f7f..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthRequestForOAuthSignup.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.request;
-
-import org.springframework.lang.Nullable;
-import org.springframework.web.multipart.MultipartFile;
-
-import cmc.mellyserver.dbcore.user.enums.AgeGroup;
-import cmc.mellyserver.dbcore.user.enums.Gender;
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class AuthRequestForOAuthSignup {
-
- private String uid;
-
- private String nickname;
-
- private Gender gender;
-
- @Nullable
- private MultipartFile profileImage;
-
- @Nullable
- private AgeGroup ageGroup;
-
- @Nullable
- private String fcmToken;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthRequestForSignup.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthRequestForSignup.java
deleted file mode 100644
index 7e7e35d6..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/AuthRequestForSignup.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.request;
-
-import org.springframework.lang.Nullable;
-import org.springframework.web.multipart.MultipartFile;
-
-import cmc.mellyserver.dbcore.user.enums.AgeGroup;
-import cmc.mellyserver.dbcore.user.enums.Gender;
-import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.Size;
-import lombok.AccessLevel;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class AuthRequestForSignup {
-
- @Email(message = "이메일 형식이 올바르지 않습니다.") // ok
- private String email;
-
- @Size(min = 8, message = "비밀번호는 8자 이상 입력해주세요.") // ok
- private String password;
-
- @Size(min = 2, max = 8, message = "닉네임은 2자 이상 8자 이하로 입력해주세요.") // ok
- private String nickname;
-
- private Gender gender;
-
- @Nullable
- private MultipartFile profileImage;
-
- @Nullable
- private AgeGroup ageGroup;
-
- private String fcmToken;
-
- @Builder
- public AuthRequestForSignup(String email, String password, String nickname, Gender gender,
- @Nullable MultipartFile profileImage, @Nullable AgeGroup ageGroup, String fcmToken) {
- this.email = email;
- this.password = password;
- this.nickname = nickname;
- this.gender = gender;
- this.profileImage = profileImage;
- this.ageGroup = ageGroup;
- this.fcmToken = fcmToken;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ChangePasswordRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ChangePasswordRequest.java
new file mode 100644
index 00000000..8f9cd1e8
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ChangePasswordRequest.java
@@ -0,0 +1,19 @@
+package cmc.mellyserver.auth.controller.dto.request;
+
+import jakarta.validation.constraints.Pattern;
+import lombok.Builder;
+
+public record ChangePasswordRequest(
+
+ String email,
+
+ @Pattern(regexp = "^(?=.*\\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,}", message = "비밀번호는 영문과 숫자 조합으로 8자리 이상 가능합니다.")
+ String passwordAfter,
+
+ String passwordBefore
+
+) {
+ @Builder
+ public ChangePasswordRequest {
+ }
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CheckDuplicateEmailRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CheckDuplicateEmailRequest.java
deleted file mode 100644
index 23460148..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CheckDuplicateEmailRequest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.request;
-
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class CheckDuplicateEmailRequest {
-
- private String email;
-
- public CheckDuplicateEmailRequest(String email) {
- this.email = email;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CheckDuplicateNicknameRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CheckDuplicateNicknameRequest.java
deleted file mode 100644
index 563e7b10..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CheckDuplicateNicknameRequest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.request;
-
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class CheckDuplicateNicknameRequest {
-
- private String nickname;
-
- public CheckDuplicateNicknameRequest(String nickname) {
- this.nickname = nickname;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/LogoutRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/LogoutRequest.java
deleted file mode 100644
index 5705ae08..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/LogoutRequest.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.request;
-
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-@Data
-public class LogoutRequest {
-
- private String accessToken;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthLoginRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthLoginRequest.java
index 304b3e27..c3426afd 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthLoginRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthLoginRequest.java
@@ -2,30 +2,15 @@
import cmc.mellyserver.auth.dto.request.OAuthLoginRequestDto;
import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.AccessLevel;
import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class OAuthLoginRequest {
-
- private String accessToken; // 리소스 서버 접근용 액세스 토큰
-
- private Provider provider; // 제공자
-
- private String fcmToken; // FCM 토큰
+public record OAuthLoginRequest(String accessToken, Provider provider, String fcmToken) {
@Builder
- public OAuthLoginRequest(String accessToken, Provider provider, String fcmToken) {
- this.accessToken = accessToken;
- this.provider = provider;
- this.fcmToken = fcmToken;
+ public OAuthLoginRequest {
}
public OAuthLoginRequestDto toDto() {
return OAuthLoginRequestDto.builder().accessToken(accessToken).fcmToken(fcmToken).provider(provider).build();
}
-
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequest.java
index 6b5f1f73..576b9fc9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequest.java
@@ -2,33 +2,27 @@
import org.hibernate.validator.constraints.Length;
+import cmc.mellyserver.auth.dto.request.OAuthSignupRequestDto;
import cmc.mellyserver.dbcore.user.enums.AgeGroup;
import cmc.mellyserver.dbcore.user.enums.Gender;
import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class OAuthSignupRequest {
+public record OAuthSignupRequest(
+ String email,
- // Oauth를 통해 넘겨받은 정보
- private String email;
+ String socialId,
- private String socialId;
+ Provider provider,
- private Provider provider;
-
- // 입력 정보
@Length(min = 2, max = 15, message = "닉네임은 2자 이상 15자 이하로 작성해주세요.")
- private String nickname; // 닉네임
+ String nickname,
- private Gender gender; // 성별
+ Gender gender,
- private AgeGroup ageGroup; // 연령대
+ AgeGroup ageGroup,
- private String fcmToken;
+ String fcmToken
+) {
public OAuthSignupRequestDto toDto() {
return new OAuthSignupRequestDto(email, socialId, provider, nickname, gender, ageGroup, fcmToken);
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequestDto.java
deleted file mode 100644
index eb2a5aaa..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/OAuthSignupRequestDto.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.request;
-
-import cmc.mellyserver.dbcore.user.User;
-import cmc.mellyserver.dbcore.user.enums.AgeGroup;
-import cmc.mellyserver.dbcore.user.enums.Gender;
-import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class OAuthSignupRequestDto {
-
- private String email;
-
- private String socialId;
-
- private Provider provider;
-
- private String nickname;
-
- private Gender gender;
-
- private AgeGroup ageGroup;
-
- private String fcmToken;
-
- public User toEntity() {
- return null;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ReIssueAccessTokenRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ReIssueAccessTokenRequest.java
index 97f72afd..35f2b935 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ReIssueAccessTokenRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/ReIssueAccessTokenRequest.java
@@ -1,12 +1,4 @@
package cmc.mellyserver.auth.controller.dto.request;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-public class ReIssueAccessTokenRequest {
-
- private String refreshToken;
-
+public record ReIssueAccessTokenRequest(String refreshToken) {
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CommonSignupRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/SignupRequest.java
similarity index 59%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CommonSignupRequest.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/SignupRequest.java
index ad8eab00..f100b4e9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/CommonSignupRequest.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/request/SignupRequest.java
@@ -7,31 +7,33 @@
import cmc.mellyserver.dbcore.user.enums.Gender;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Pattern;
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class CommonSignupRequest {
+public record SignupRequest(
@Email(message = "이메일 양식으로 작성해주세요.")
- private String email; // 이메일
+ String email,
@Pattern(regexp = "^(?=.*\\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,}", message = "비밀번호는 영문과 숫자 조합으로 8자리 이상 가능합니다.")
- private String password; // 비밀번호
+ String password,
@Length(min = 2, max = 15, message = "닉네임은 2자 이상 15자 이하로 작성해주세요.")
- private String nickname; // 닉네임
+ String nickname,
- private Gender gender; // 성별
+ Gender gender,
- private AgeGroup ageGroup; // 연령대
+ AgeGroup ageGroup,
- private String fcmToken;
+ String fcmToken
+) {
public AuthSignupRequestDto toDto() {
- return new AuthSignupRequestDto(email, password, nickname, ageGroup, gender, fcmToken);
+ return AuthSignupRequestDto.builder()
+ .email(email)
+ .password(password)
+ .nickname(nickname)
+ .ageGroup(ageGroup)
+ .gender(gender)
+ .fcmToken(fcmToken)
+ .build();
}
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenResponse.java
deleted file mode 100644
index 63a22b71..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenResponse.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class AccessTokenResponse {
-
- private int code;
-
- private String message;
-
- private AccessTokenUserData user;
-
- private String token;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenUserData.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenUserData.java
index 1db22f01..c7f96d2b 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenUserData.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AccessTokenUserData.java
@@ -4,32 +4,31 @@
import cmc.mellyserver.dbcore.user.enums.AgeGroup;
import cmc.mellyserver.dbcore.user.enums.Gender;
import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.AllArgsConstructor;
import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-@Data
-@AllArgsConstructor
-@Builder
-@NoArgsConstructor
-public class AccessTokenUserData {
+public record AccessTokenUserData(
- private Long id;
+ Long id,
- private String uid;
+ String uid,
- private Provider provider;
+ Provider provider,
- private String email;
+ String email,
- private String nickname;
+ String nickname,
- private String profileImage;
+ String profileImage,
- private Gender gender;
+ Gender gender,
- private AgeGroup ageGroup;
+ AgeGroup ageGroup
+
+) {
+
+ @Builder
+ public AccessTokenUserData {
+ }
public static AccessTokenUserData from(User user) {
return AccessTokenUserData.builder()
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthResponse.java
deleted file mode 100644
index cf1447a3..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthResponse.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@AllArgsConstructor
-@Data
-public class AuthResponse {
-
- private String appToken;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthResponseForLogin.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthResponseForLogin.java
deleted file mode 100644
index 9e9d340e..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthResponseForLogin.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.Builder;
-import lombok.Data;
-
-@Data
-public class AuthResponseForLogin {
-
- private AccessTokenUserData user;
-
- private String token;
-
- @Builder
- public AuthResponseForLogin(AccessTokenUserData user, String token) {
- this.user = user;
- this.token = token;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthUserDataResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthUserDataResponse.java
deleted file mode 100644
index 5b8791b8..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/AuthUserDataResponse.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class AuthUserDataResponse {
-
- private int code;
-
- private String message;
-
- private AccessTokenUserData user;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/CheckDuplicateEmailResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/CheckDuplicateEmailResponse.java
deleted file mode 100644
index 2838e29f..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/CheckDuplicateEmailResponse.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class CheckDuplicateEmailResponse {
-
- private int code;
-
- private String message;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/CheckDuplicateNicknameResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/CheckDuplicateNicknameResponse.java
deleted file mode 100644
index 53e7e720..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/CheckDuplicateNicknameResponse.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class CheckDuplicateNicknameResponse {
-
- private int code;
-
- private String message;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/LoginResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/LoginResponse.java
deleted file mode 100644
index f52d14c7..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/LoginResponse.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-@Getter
-@Setter
-@NoArgsConstructor
-public class LoginResponse {
-
- private AccessTokenUserData user;
-
- private String token;
-
- @Builder
- public LoginResponse(AccessTokenUserData user, String token) {
- this.user = user;
- this.token = token;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthLoginResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthLoginResponse.java
deleted file mode 100644
index 411f605c..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthLoginResponse.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class OAuthLoginResponse {
-
- private AccessTokenUserData user;
-
- private String token;
-
- private boolean isNewUser;
-
- public OAuthLoginResponse(boolean isNewUser, AccessTokenUserData user) {
- this.isNewUser = isNewUser;
- this.user = AccessTokenUserData.builder().uid(user.getUid()).build();
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthLoginResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthLoginResponseDto.java
deleted file mode 100644
index a6044789..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthLoginResponseDto.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class OAuthLoginResponseDto {
-
- private AccessTokenUserData user;
-
- private String token;
-
- private boolean isNewUser;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthSignupResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthSignupResponseDto.java
deleted file mode 100644
index 97062510..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthSignupResponseDto.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class OAuthSignupResponseDto {
-
- private String socialId;
-
- private String provider;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/SignupResponse.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/SignupResponse.java
deleted file mode 100644
index c520bf44..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/SignupResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import lombok.Builder;
-import lombok.Data;
-
-@Data
-public class SignupResponse {
-
- private AccessTokenUserData user;
-
- private String token;
-
- @Builder
- public SignupResponse(AccessTokenUserData user, String token) {
- this.user = user;
- this.token = token;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/UserExistResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/UserExistResponseDto.java
deleted file mode 100644
index 4c06e131..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/UserExistResponseDto.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cmc.mellyserver.auth.controller.dto.response;
-
-import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class UserExistResponseDto {
-
- private Provider provider;
-
- private String email;
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthLoginRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthLoginRequestDto.java
index 8ad781d2..7d707af7 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthLoginRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthLoginRequestDto.java
@@ -1,27 +1,11 @@
package cmc.mellyserver.auth.dto.request;
import lombok.Builder;
-import lombok.Data;
-/**
- * AuthLoginDto.java
- *
- * @author jemlog
- */
-@Data
-public class AuthLoginRequestDto {
-
- private String email;
-
- private String password;
-
- private String fcmToken;
+public record AuthLoginRequestDto(String email, String password, String fcmToken) {
@Builder
- public AuthLoginRequestDto(String email, String password, String fcmToken) {
- this.email = email;
- this.password = password;
- this.fcmToken = fcmToken;
+ public AuthLoginRequestDto {
}
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java
index 3669b71c..0e17e5d3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/AuthSignupRequestDto.java
@@ -10,35 +10,26 @@
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Pattern;
import lombok.Builder;
-import lombok.Data;
-@Data
-public class AuthSignupRequestDto {
+public record AuthSignupRequestDto(
@Email
- private String email; // 이메일 받고
+ String email,
@Length(min = 2, max = 15, message = "닉네임은 2자 이상 15자 이하로 작성해주세요.")
- private String nickname; // 닉네임 받고
+ String nickname,
@Pattern(regexp = "^(?=.*\\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,}", message = "비밀번호는 영문과 숫자 조합으로 8자리 이상 가능합니다.")
- private String password; // 비밀번호 받고
+ String password,
- private Gender gender; // 성별 받고
+ Gender gender,
- private AgeGroup ageGroup; // 연령대 받고
-
- private String fcmToken;
+ AgeGroup ageGroup,
+ String fcmToken
+) {
@Builder
- public AuthSignupRequestDto(String email, String password, String nickname, AgeGroup ageGroup, Gender gender,
- String fcmToken) {
- this.email = email;
- this.password = password;
- this.nickname = nickname;
- this.ageGroup = ageGroup;
- this.gender = gender;
- this.fcmToken = fcmToken;
+ public AuthSignupRequestDto {
}
public User toEntity() {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/ChangePasswordRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/ChangePasswordRequest.java
deleted file mode 100644
index 22758635..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/ChangePasswordRequest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cmc.mellyserver.auth.dto.request;
-
-import jakarta.validation.constraints.Pattern;
-import lombok.AccessLevel;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-
-@Getter
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class ChangePasswordRequest {
-
- private String email;
-
- @Pattern(regexp = "^(?=.*\\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,}", message = "비밀번호는 영문과 숫자 조합으로 8자리 이상 가능합니다.")
- private String passwordAfter;
-
- private String passwordBefore;
-
- @Builder
- public ChangePasswordRequest(String email, String passwordAfter, String passwordBefore) {
- this.email = email;
- this.passwordAfter = passwordAfter;
- this.passwordBefore = passwordBefore;
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/EmailCertificationRequest.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/EmailCertificationRequest.java
new file mode 100644
index 00000000..5bb27e71
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/EmailCertificationRequest.java
@@ -0,0 +1,5 @@
+package cmc.mellyserver.auth.dto.request;
+
+public record EmailCertificationRequest(String email, String certificationNumber) {
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthLoginRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthLoginRequestDto.java
index 2ed33dd3..3d9fb8e6 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthLoginRequestDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthLoginRequestDto.java
@@ -1,26 +1,12 @@
package cmc.mellyserver.auth.dto.request;
import cmc.mellyserver.dbcore.user.enums.Provider;
-import lombok.AccessLevel;
import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-@Data
-@NoArgsConstructor(access = AccessLevel.PROTECTED)
-public class OAuthLoginRequestDto {
-
- private String accessToken;
-
- private Provider provider;
-
- private String fcmToken;
+public record OAuthLoginRequestDto(String accessToken, Provider provider, String fcmToken) {
@Builder
- public OAuthLoginRequestDto(String accessToken, Provider provider, String fcmToken) {
- this.accessToken = accessToken;
- this.provider = provider;
- this.fcmToken = fcmToken;
+ public OAuthLoginRequestDto {
}
}
\ No newline at end of file
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthSignupRequestDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthSignupRequestDto.java
new file mode 100644
index 00000000..7169c321
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/request/OAuthSignupRequestDto.java
@@ -0,0 +1,28 @@
+package cmc.mellyserver.auth.dto.request;
+
+import cmc.mellyserver.dbcore.user.User;
+import cmc.mellyserver.dbcore.user.enums.AgeGroup;
+import cmc.mellyserver.dbcore.user.enums.Gender;
+import cmc.mellyserver.dbcore.user.enums.Provider;
+
+public record OAuthSignupRequestDto(
+ String email,
+
+ String socialId,
+
+ Provider provider,
+
+ String nickname,
+
+ Gender gender,
+
+ AgeGroup ageGroup,
+
+ String fcmToken
+) {
+
+ public User toEntity() {
+ return null;
+ }
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthLoginResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthLoginResponseDto.java
index fc577b62..ee7d3cf0 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthLoginResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthLoginResponseDto.java
@@ -1,22 +1,7 @@
package cmc.mellyserver.auth.dto.response;
import cmc.mellyserver.dbcore.user.enums.UserStatus;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-/**
- * OAuthLoginResponseDto.java
- *
- * @author jemlog
- */
-@Data
-@AllArgsConstructor
-@Builder
-public class OAuthLoginResponseDto {
-
- private String accessToken;
-
- private UserStatus userStatus;
+public record OAuthLoginResponseDto(String accessToken, UserStatus userStatus) {
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthResponseDto.java
similarity index 53%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthResponseDto.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthResponseDto.java
index 6b740505..5b4338c7 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/controller/dto/response/OAuthResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthResponseDto.java
@@ -1,16 +1,6 @@
-package cmc.mellyserver.auth.controller.dto.response;
+package cmc.mellyserver.auth.dto.response;
-import cmc.mellyserver.auth.dto.response.TokenResponseDto;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class OAuthResponseDto {
-
- public TokenResponseDto tokenInfo;
-
- public OAuthSignupResponseDto data;
+public record OAuthResponseDto(TokenResponseDto tokenInfo, OAuthSignupResponseDto data) {
public static OAuthResponseDto newUser(String socialId, String provider) {
return new OAuthResponseDto(null, new OAuthSignupResponseDto(socialId, provider));
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthSignupResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthSignupResponseDto.java
new file mode 100644
index 00000000..b86cde18
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/OAuthSignupResponseDto.java
@@ -0,0 +1,5 @@
+package cmc.mellyserver.auth.dto.response;
+
+public record OAuthSignupResponseDto(String socialId, String provider) {
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/RefreshTokenDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/RefreshTokenDto.java
index 60989c60..259a12ae 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/RefreshTokenDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/RefreshTokenDto.java
@@ -1,14 +1,4 @@
package cmc.mellyserver.auth.dto.response;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class RefreshTokenDto {
-
- private String token;
-
- private Long expiredAt;
-
+public record RefreshTokenDto(String token, long expiredAt) {
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/TokenResponseDto.java b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/TokenResponseDto.java
index 9ebe6a73..7d9f8024 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/TokenResponseDto.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/dto/response/TokenResponseDto.java
@@ -1,15 +1,6 @@
package cmc.mellyserver.auth.dto.response;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-@Data
-@AllArgsConstructor
-public class TokenResponseDto {
-
- private String accessToken;
-
- private String refreshToken;
+public record TokenResponseDto(String accessToken, String refreshToken) {
public static TokenResponseDto of(String accessToken, String refreshToken) {
return new TokenResponseDto(accessToken, refreshToken);
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/repository/AuthTokenRepository.java b/core/core-api/src/main/java/cmc/mellyserver/auth/repository/AuthTokenRepository.java
deleted file mode 100644
index ff00a54f..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/repository/AuthTokenRepository.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package cmc.mellyserver.auth.repository;
-
-import java.util.Objects;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.ValueOperations;
-import org.springframework.stereotype.Repository;
-
-import cmc.mellyserver.auth.config.RedisConstants;
-import cmc.mellyserver.auth.token.TokenProvider;
-import lombok.RequiredArgsConstructor;
-
-@Repository
-@RequiredArgsConstructor
-public class AuthTokenRepository {
-
- private final RedisTemplate redisTemplate;
-
- private final TokenProvider tokenProvider;
-
- public void saveRefreshToken(final RefreshToken refreshToken, final Long refreshTokenExpire) {
- redisTemplate.opsForValue()
- .set(RedisConstants.REFRESH_TOKEN_PREFIX + refreshToken.userId(), refreshToken.refreshToken(),
- refreshTokenExpire, TimeUnit.MILLISECONDS);
- }
-
- public void makeAccessTokenDisabled(final String accessToken) {
- redisTemplate.opsForValue()
- .set(accessToken, RedisConstants.ACCESS_TOKEN_BLACKLIST, tokenProvider.getLastExpireTime(accessToken),
- TimeUnit.MILLISECONDS);
- }
-
- public Optional findRefreshToken(final Long userId) {
- ValueOperations valueOperations = redisTemplate.opsForValue();
- String refreshToken = valueOperations.get(RedisConstants.REFRESH_TOKEN_PREFIX + userId);
-
- if (Objects.isNull(refreshToken)) {
- return Optional.empty();
- }
-
- return Optional.of(new RefreshToken(refreshToken, userId));
- }
-
- public void removeRefreshToken(final Long userId) {
-
- redisTemplate.delete(RedisConstants.REFRESH_TOKEN_PREFIX + userId);
- }
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/service/AuthService.java
similarity index 88%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/service/AuthService.java
index fb014f1f..c3b22d59 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/AuthService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/service/AuthService.java
@@ -1,19 +1,19 @@
-package cmc.mellyserver.auth;
+package cmc.mellyserver.auth.service;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import cmc.mellyserver.auth.controller.dto.request.ChangePasswordRequest;
import cmc.mellyserver.auth.dto.request.AuthLoginRequestDto;
import cmc.mellyserver.auth.dto.request.AuthSignupRequestDto;
-import cmc.mellyserver.auth.dto.request.ChangePasswordRequest;
import cmc.mellyserver.auth.dto.response.TokenResponseDto;
-import cmc.mellyserver.auth.repository.RefreshToken;
+import cmc.mellyserver.auth.token.RefreshToken;
import cmc.mellyserver.auth.token.TokenDto;
import cmc.mellyserver.auth.token.TokenService;
import cmc.mellyserver.dbcore.user.User;
-import cmc.mellyserver.dbredis.repository.FcmTokenRepository;
+import cmc.mellyserver.dbredis.FcmTokenRepository;
import cmc.mellyserver.domain.comment.event.SignupEvent;
import cmc.mellyserver.domain.user.UserReader;
import cmc.mellyserver.domain.user.UserWriter;
@@ -40,14 +40,14 @@ public class AuthService {
@Transactional
public TokenResponseDto signup(AuthSignupRequestDto authSignupRequestDto) {
- checkDuplicatedEmail(authSignupRequestDto.getEmail());
+ checkDuplicatedEmail(authSignupRequestDto.email());
User user = userWriter.save(authSignupRequestDto.toEntity());
TokenDto tokenDto = tokenService.createToken(user);
fcmTokenRepository.saveToken(user.getId().toString(), user.getFcmToken());
publisher.publishEvent(new SignupEvent(user.getId()));
- return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().token());
}
/*
@@ -58,13 +58,13 @@ public TokenResponseDto signup(AuthSignupRequestDto authSignupRequestDto) {
@Transactional
public TokenResponseDto login(AuthLoginRequestDto authLoginRequestDto) {
- User user = checkEmail(authLoginRequestDto.getEmail());
- checkPassword(authLoginRequestDto.getPassword(), user.getPassword());
+ User user = checkEmail(authLoginRequestDto.email());
+ checkPassword(authLoginRequestDto.password(), user.getPassword());
TokenDto tokenDto = tokenService.createToken(user);
- fcmTokenRepository.saveToken(user.getId().toString(), authLoginRequestDto.getFcmToken());
+ fcmTokenRepository.saveToken(user.getId().toString(), authLoginRequestDto.fcmToken());
- return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().token());
}
// Refresh Token Rotation (RTR) 전략 적용
@@ -78,7 +78,7 @@ public TokenResponseDto reIssueAccessTokenAndRefreshToken(final String token) {
User user = userReader.findById(refreshToken.userId());
TokenDto tokenDto = tokenService.createToken(user);
- return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().token());
}
public void logout(final Long userId, final String accessToken) {
@@ -115,9 +115,9 @@ public void checkDuplicatedEmail(final String email) {
@Transactional
public void updateForgetPassword(ChangePasswordRequest requestDto) {
- User user = userReader.findByEmail(requestDto.getEmail())
+ User user = userReader.findByEmail(requestDto.email())
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
- user.changePassword(requestDto.getPasswordAfter());
+ user.changePassword(requestDto.passwordAfter());
}
@Transactional
@@ -125,8 +125,8 @@ public void changePassword(final Long userId, ChangePasswordRequest requestDto)
User user = userReader.findById(userId);
- String passwordBefore = passwordEncoder.encode(requestDto.getPasswordBefore());
- String passwordAfter = passwordEncoder.encode(requestDto.getPasswordAfter());
+ String passwordBefore = passwordEncoder.encode(requestDto.passwordBefore());
+ String passwordAfter = passwordEncoder.encode(requestDto.passwordAfter());
if (!userReader.existsByEmailAndPassword(user.getEmail(), passwordBefore)) {
throw new BusinessException(ErrorCode.BEFORE_PASSWORD_NOT_EXIST);
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java b/core/core-api/src/main/java/cmc/mellyserver/auth/service/LoginClientFactory.java
similarity index 96%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/service/LoginClientFactory.java
index 69b33eb9..9b7e2dd3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/LoginClientFactory.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/service/LoginClientFactory.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.auth;
+package cmc.mellyserver.auth.service;
import java.util.List;
import java.util.Map;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/service/OAuthService.java
similarity index 80%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/service/OAuthService.java
index 9ac6e4a1..b17af39e 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/OAuthService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/service/OAuthService.java
@@ -1,26 +1,24 @@
-package cmc.mellyserver.auth;
+package cmc.mellyserver.auth.service;
import java.util.Objects;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import cmc.mellyserver.auth.controller.dto.request.OAuthSignupRequestDto;
-import cmc.mellyserver.auth.controller.dto.response.OAuthResponseDto;
import cmc.mellyserver.auth.dto.request.OAuthLoginRequestDto;
+import cmc.mellyserver.auth.dto.request.OAuthSignupRequestDto;
+import cmc.mellyserver.auth.dto.response.OAuthResponseDto;
import cmc.mellyserver.auth.dto.response.TokenResponseDto;
import cmc.mellyserver.auth.token.TokenDto;
import cmc.mellyserver.auth.token.TokenService;
import cmc.mellyserver.clientauth.LoginClient;
import cmc.mellyserver.clientauth.api.LoginClientResult;
import cmc.mellyserver.dbcore.user.User;
-import cmc.mellyserver.dbredis.repository.FcmTokenRepository;
+import cmc.mellyserver.dbredis.FcmTokenRepository;
import cmc.mellyserver.domain.user.UserReader;
import cmc.mellyserver.domain.user.UserWriter;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-@Slf4j
@Service
@RequiredArgsConstructor
public class OAuthService {
@@ -40,15 +38,15 @@ public TokenResponseDto signup(OAuthSignupRequestDto oAuthSignupRequestDto) {
User user = userWriter.save(oAuthSignupRequestDto.toEntity());
TokenDto tokenDto = tokenService.createToken(user);
- fcmTokenRepository.saveToken(user.getId().toString(), oAuthSignupRequestDto.getFcmToken());
- return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
+ fcmTokenRepository.saveToken(user.getId().toString(), oAuthSignupRequestDto.fcmToken());
+ return TokenResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().token());
}
@Transactional
public OAuthResponseDto login(OAuthLoginRequestDto oAuthLoginRequestDto) {
- LoginClient loginClient = loginClientFactory.find(oAuthLoginRequestDto.getProvider());
- LoginClientResult socialUser = loginClient.getUserData(oAuthLoginRequestDto.getAccessToken());
+ LoginClient loginClient = loginClientFactory.find(oAuthLoginRequestDto.provider());
+ LoginClientResult socialUser = loginClient.getUserData(oAuthLoginRequestDto.accessToken());
User user = userReader.findBySocialId(socialUser.uid());
if (Objects.isNull(user)) {
@@ -56,8 +54,8 @@ public OAuthResponseDto login(OAuthLoginRequestDto oAuthLoginRequestDto) {
}
TokenDto tokenDto = tokenService.createToken(user);
- fcmTokenRepository.saveToken(user.getId().toString(), oAuthLoginRequestDto.getFcmToken());
- return OAuthResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().getToken());
+ fcmTokenRepository.saveToken(user.getId().toString(), oAuthLoginRequestDto.fcmToken());
+ return OAuthResponseDto.of(tokenDto.accessToken(), tokenDto.refreshToken().token());
}
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/AuthTokenRepository.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/AuthTokenRepository.java
new file mode 100644
index 00000000..f52e89a9
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/AuthTokenRepository.java
@@ -0,0 +1,46 @@
+package cmc.mellyserver.auth.token;
+
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.stereotype.Repository;
+
+import lombok.RequiredArgsConstructor;
+
+@Repository
+@RequiredArgsConstructor
+public class AuthTokenRepository {
+
+ private final RedisTemplate redisTemplate;
+
+ public void saveRefreshToken(RefreshToken refreshToken, Long refreshTokenExpiredTime) {
+ redisTemplate.opsForValue()
+ .set(TokenConstants.REFRESH_TOKEN_PREFIX + refreshToken.userId(), refreshToken.refreshToken(),
+ refreshTokenExpiredTime, TimeUnit.MILLISECONDS);
+ }
+
+ public void makeAccessTokenDisabled(String accessToken, long lastExpiredTime) {
+ redisTemplate.opsForValue()
+ .set(accessToken, TokenConstants.ACCESS_TOKEN_BLACKLIST, lastExpiredTime, TimeUnit.MILLISECONDS);
+ }
+
+ public Optional findRefreshToken(Long userId) {
+ ValueOperations valueOperations = redisTemplate.opsForValue();
+ String refreshToken = valueOperations.get(TokenConstants.REFRESH_TOKEN_PREFIX + userId);
+
+ if (Objects.isNull(refreshToken)) {
+ return Optional.empty();
+ }
+
+ return Optional.of(new RefreshToken(refreshToken, userId));
+ }
+
+ public void removeRefreshToken(Long userId) {
+
+ redisTemplate.delete(TokenConstants.REFRESH_TOKEN_PREFIX + userId);
+ }
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/JwtTokenProvider.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/JwtTokenProvider.java
index 2869f125..95a8efeb 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/token/JwtTokenProvider.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/JwtTokenProvider.java
@@ -30,9 +30,7 @@
@Component
public class JwtTokenProvider implements TokenProvider {
- protected final String secret;
-
- protected final Key secretKey;
+ private final Key secretKey;
private final long accessExpirationTime;
@@ -43,7 +41,6 @@ public JwtTokenProvider(
@Value("${app.auth.access-expiration-time}") long accessExpirationTime,
@Value("${app.auth.refresh-expiration-time}") long refreshExpirationTime
) {
- this.secret = secret;
this.accessExpirationTime = accessExpirationTime;
this.refreshExpirationTime = refreshExpirationTime;
byte[] keyBytes = Decoders.BASE64.decode(secret);
@@ -100,7 +97,7 @@ public Authentication getAuthentication(String token) {
}
@Override
- public long getLastExpireTime(String token) {
+ public long getLastExpiredTime(String token) {
Date expirationDate = Jwts.parserBuilder()
.setSigningKey(secretKey)
@@ -114,7 +111,7 @@ public long getLastExpireTime(String token) {
}
@Override
- public Long extractUserId(String accessToken) {
+ public long extractUserId(String accessToken) {
try {
String memberId = Jwts.parserBuilder()
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/repository/RefreshToken.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/RefreshToken.java
similarity index 61%
rename from core/core-api/src/main/java/cmc/mellyserver/auth/repository/RefreshToken.java
rename to core/core-api/src/main/java/cmc/mellyserver/auth/token/RefreshToken.java
index 2eb9777d..6f28431b 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/repository/RefreshToken.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/RefreshToken.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.auth.repository;
+package cmc.mellyserver.auth.token;
public record RefreshToken(String refreshToken, Long userId) {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenConstants.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenConstants.java
index 84c10a4d..dbc7cef3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenConstants.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenConstants.java
@@ -2,11 +2,15 @@
public abstract class TokenConstants {
- protected static final String ROLE = "role";
+ public static final String ROLE = "role";
- protected static final String AUTHORITY_KEY = "auth";
+ public static final String AUTHORITY_KEY = "auth";
- protected static final String ACCESS_TOKEN = "access_token";
+ public static final String ACCESS_TOKEN = "access_token";
- protected static final String REFRESH_TOKEN = "refresh_token";
+ public static final String REFRESH_TOKEN = "refresh_token";
+
+ public static final String REFRESH_TOKEN_PREFIX = "rft:user-id:";
+
+ public static final String ACCESS_TOKEN_BLACKLIST = "blackList";
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenProvider.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenProvider.java
index 263bfe2f..f84fbae9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenProvider.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenProvider.java
@@ -13,9 +13,9 @@ public interface TokenProvider {
Authentication getAuthentication(String accessToken);
- long getLastExpireTime(String accessToken);
+ long getLastExpiredTime(String accessToken);
- Long extractUserId(String accessToken);
+ long extractUserId(String accessToken);
boolean validateToken(String accessToken);
diff --git a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java
index f88d05b0..b0e1a794 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/auth/token/TokenService.java
@@ -3,8 +3,6 @@
import org.springframework.stereotype.Component;
import cmc.mellyserver.auth.dto.response.RefreshTokenDto;
-import cmc.mellyserver.auth.repository.AuthTokenRepository;
-import cmc.mellyserver.auth.repository.RefreshToken;
import cmc.mellyserver.dbcore.user.User;
import cmc.mellyserver.support.exception.BusinessException;
import cmc.mellyserver.support.exception.ErrorCode;
@@ -21,8 +19,8 @@ public class TokenService {
public TokenDto createToken(User user) {
String accessToken = tokenProvider.createAccessToken(user.getId(), user.getRoleType());
RefreshTokenDto refreshToken = tokenProvider.createRefreshToken(user.getId(), user.getRoleType());
- tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.getToken(), user.getId()),
- refreshToken.getExpiredAt());
+ tokenRepository.saveRefreshToken(new RefreshToken(refreshToken.token(), user.getId()),
+ refreshToken.expiredAt());
return new TokenDto(accessToken, refreshToken);
}
@@ -33,7 +31,8 @@ public RefreshToken findRefreshToken(Long userId) {
}
public void makeAccessTokenDisabled(String accessToken) {
- tokenRepository.makeAccessTokenDisabled(accessToken);
+ long lastExpireTime = tokenProvider.getLastExpiredTime(accessToken);
+ tokenRepository.makeAccessTokenDisabled(accessToken, lastExpireTime);
}
public void removeRefreshToken(Long userId) {
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/event/CertificationCompletedEvent.java b/core/core-api/src/main/java/cmc/mellyserver/common/event/CertificationCompletedEvent.java
new file mode 100644
index 00000000..cd851e2c
--- /dev/null
+++ b/core/core-api/src/main/java/cmc/mellyserver/common/event/CertificationCompletedEvent.java
@@ -0,0 +1,5 @@
+package cmc.mellyserver.common.event;
+
+public record CertificationCompletedEvent(String email, String content) {
+
+}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCertificationEvent.java b/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCertificationEvent.java
deleted file mode 100644
index 9a3deff9..00000000
--- a/core/core-api/src/main/java/cmc/mellyserver/common/event/SignupCertificationEvent.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package cmc.mellyserver.common.event;
-
-public record SignupCertificationEvent(String email, String content) {
-
-}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/common/event/handler/SignupCertificationEventHandler.java b/core/core-api/src/main/java/cmc/mellyserver/common/event/handler/SignupCertificationEventHandler.java
index 0218bf17..e2a1df8a 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/common/event/handler/SignupCertificationEventHandler.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/common/event/handler/SignupCertificationEventHandler.java
@@ -5,7 +5,7 @@
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;
-import cmc.mellyserver.common.event.SignupCertificationEvent;
+import cmc.mellyserver.common.event.CertificationCompletedEvent;
import cmc.mellyserver.mail.EmailConstants;
import cmc.mellyserver.mail.EmailService;
import lombok.RequiredArgsConstructor;
@@ -18,7 +18,7 @@ class SignupCertificationEventHandler {
@Async
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
- public void handle(SignupCertificationEvent event) {
+ public void handle(CertificationCompletedEvent event) {
emailService.send(EmailConstants.TITLE_CERTIFICATION, event.content(), event.email());
}
diff --git a/core/core-api/src/main/java/cmc/mellyserver/config/web/WebConfig.java b/core/core-api/src/main/java/cmc/mellyserver/config/web/WebConfig.java
index 3baac87f..c23bfdf3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/config/web/WebConfig.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/config/web/WebConfig.java
@@ -6,7 +6,7 @@
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import cmc.mellyserver.common.resolver.LoginUserIdArgumentResolver;
+import cmc.mellyserver.auth.common.resolver.LoginUserIdArgumentResolver;
import lombok.RequiredArgsConstructor;
@Configuration
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/comment/CommentController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/comment/CommentController.java
index 48351ef7..aa5db541 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/comment/CommentController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/comment/CommentController.java
@@ -10,8 +10,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.comment.dto.CommentAssembler;
import cmc.mellyserver.controller.comment.dto.request.CommentRequest;
import cmc.mellyserver.controller.comment.dto.request.CommentUpdateRequest;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/group/GroupController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/group/GroupController.java
index 234085d5..151637e0 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/group/GroupController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/group/GroupController.java
@@ -10,8 +10,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.group.dto.GroupAssembler;
import cmc.mellyserver.controller.group.dto.request.GroupCreateRequest;
import cmc.mellyserver.controller.group.dto.request.GroupUpdateRequest;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java
index f747fcb8..8e638d37 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/memory/MemoryController.java
@@ -16,8 +16,8 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.memory.dto.MemoryAssembler;
import cmc.mellyserver.controller.memory.dto.request.MemoryCreateRequest;
import cmc.mellyserver.controller.memory.dto.request.MemoryUpdateRequest;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/notification/NotificationController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/notification/NotificationController.java
index c4f4f3a8..085cb3d9 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/notification/NotificationController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/notification/NotificationController.java
@@ -9,8 +9,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.notification.dto.request.NotificationCheckRequest;
import cmc.mellyserver.controller.notification.dto.response.NotificationResponse;
import cmc.mellyserver.dbcore.notification.enums.NotificationType;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java
index 1a43751e..23d9c673 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/place/PlaceController.java
@@ -11,8 +11,8 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.memory.dto.MemoryAssembler;
import cmc.mellyserver.controller.memory.dto.response.FindPlaceInfoByMemoryNameResponse;
import cmc.mellyserver.controller.place.dto.request.PlaceSimpleRequest;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/PlaceScrapController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/PlaceScrapController.java
index 02e0422a..be4401b6 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/PlaceScrapController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/scrap/PlaceScrapController.java
@@ -7,8 +7,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.scrap.dto.request.ScrapCancelRequest;
import cmc.mellyserver.controller.scrap.dto.request.ScrapRequest;
import cmc.mellyserver.dbcore.place.Position;
diff --git a/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java b/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java
index 9049f7ed..7f6f9ce3 100644
--- a/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java
+++ b/core/core-api/src/main/java/cmc/mellyserver/controller/user/UserController.java
@@ -15,8 +15,8 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import cmc.mellyserver.auth.controller.dto.common.CurrentUser;
-import cmc.mellyserver.auth.controller.dto.common.LoginUser;
+import cmc.mellyserver.auth.common.resolver.CurrentUser;
+import cmc.mellyserver.auth.common.resolver.LoginUser;
import cmc.mellyserver.controller.user.dto.UserAssembler;
import cmc.mellyserver.controller.user.dto.request.ProfileUpdateRequest;
import cmc.mellyserver.controller.user.dto.response.PlaceScrapCountResponse;
diff --git a/core/core-api/src/test/java/cmc/mellyserver/common/mock/MockMailCertificationService.java b/core/core-api/src/test/java/cmc/mellyserver/common/mock/MockMailCertificationService.java
index 2f765e7f..4964784a 100644
--- a/core/core-api/src/test/java/cmc/mellyserver/common/mock/MockMailCertificationService.java
+++ b/core/core-api/src/test/java/cmc/mellyserver/common/mock/MockMailCertificationService.java
@@ -3,8 +3,8 @@
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
-import cmc.mellyserver.auth.certification.CertificationService;
-import cmc.mellyserver.auth.certification.EmailCertificationRequest;
+import cmc.mellyserver.auth.certificate.CertificationService;
+import cmc.mellyserver.auth.dto.request.EmailCertificationRequest;
import lombok.extern.slf4j.Slf4j;
@Slf4j
diff --git a/infra/notification/src/main/java/cmc/mellyserver/notification/fcm/FCMSendService.java b/infra/notification/src/main/java/cmc/mellyserver/notification/fcm/FCMSendService.java
index 2817e468..1e8e9f03 100644
--- a/infra/notification/src/main/java/cmc/mellyserver/notification/fcm/FCMSendService.java
+++ b/infra/notification/src/main/java/cmc/mellyserver/notification/fcm/FCMSendService.java
@@ -6,7 +6,7 @@
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.Message;
-import cmc.mellyserver.dbredis.repository.FcmTokenRepository;
+import cmc.mellyserver.dbredis.FcmTokenRepository;
import cmc.mellyserver.notification.NotificationService;
import cmc.mellyserver.notification.constants.NotificationConstants;
import lombok.RequiredArgsConstructor;
diff --git a/storage/db-redis/src/main/java/cmc/mellyserver/dbredis/repository/FcmTokenRepository.java b/storage/db-redis/src/main/java/cmc/mellyserver/dbredis/FcmTokenRepository.java
similarity index 93%
rename from storage/db-redis/src/main/java/cmc/mellyserver/dbredis/repository/FcmTokenRepository.java
rename to storage/db-redis/src/main/java/cmc/mellyserver/dbredis/FcmTokenRepository.java
index 3e0b720a..e97da9d9 100644
--- a/storage/db-redis/src/main/java/cmc/mellyserver/dbredis/repository/FcmTokenRepository.java
+++ b/storage/db-redis/src/main/java/cmc/mellyserver/dbredis/FcmTokenRepository.java
@@ -1,4 +1,4 @@
-package cmc.mellyserver.dbredis.repository;
+package cmc.mellyserver.dbredis;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;