Skip to content

Commit 08fedac

Browse files
authored
Refactor: user 회원가입 시 토큰 자동 발급 (#196)
* refactor: 회원가입 시 자동 토큰 발급 * refactor: null 체크 순서가 잘못된 이슈 해결 * refactor: 사용하지않는 import문 삭제 * refactor: 자바 버전 변경 수정
1 parent 0f7bf33 commit 08fedac

File tree

4 files changed

+23
-19
lines changed

4 files changed

+23
-19
lines changed

src/main/java/org/ezcode/codetest/application/usermanagement/auth/dto/response/SignupResponse.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
@Schema(description = "회원가입 응답")
66
public record SignupResponse(
77
@Schema(description = "회원 가입 완료 메세지")
8-
String message
8+
String message,
9+
@Schema(description = "생성된 accessToken")
10+
String accessToken,
11+
@Schema(description = "생성된 refreshToken")
12+
String refreshToken
913
) {
10-
public static SignupResponse from(String message) {
11-
return new SignupResponse(message);
14+
public static SignupResponse from(String message, String accessToken, String refreshToken) {
15+
return new SignupResponse(message, accessToken, refreshToken);
1216
}
1317
}

src/main/java/org/ezcode/codetest/application/usermanagement/auth/service/AuthService.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,36 +52,41 @@ public class AuthService {
5252
이메일 회원가입
5353
- 이미 가입된 이메일 거절
5454
- 비밀번호 암호화
55+
- 토큰 자동 발급 (자동 로그인)
5556
*/
5657
@Transactional
5758
public SignupResponse signup(SignupRequest request) {
5859
validateRequest(request);
59-
userRegisterationProcess(request);
60+
User createdUser = userRegisterationProcess(request);
6061

61-
return SignupResponse.from("회원가입이 완료되었습니다.");
62+
// 회원가입 성공 후 자동 로그인을 위한 토큰 발급
63+
String accessToken = createAccessToken(createdUser);
64+
String refreshToken = createRefreshToken(createdUser);
65+
66+
return SignupResponse.from("회원가입이 완료되었습니다.", accessToken, refreshToken);
6267
}
6368

6469
//1. 보낸 요청의 비밀번호&비밀번호확인이 일치하는지
6570
private void validateRequest(SignupRequest request) {
6671
userDomainService.checkEmailUnique(request.getEmail());
6772
if (!request.getPassword().equals(request.getPasswordConfirm())){
6873
throw new AuthException(AuthExceptionCode.PASSWORD_NOT_MATCH);
69-
};
74+
}
7075
}
7176

7277
//2. 이미 다른 방식으로 회원가입한 유저인지 검증
73-
private void userRegisterationProcess(SignupRequest request) {
78+
private User userRegisterationProcess(SignupRequest request) {
7479
String encodedPassword = userDomainService.encodePassword(request.getPassword());
7580
User existUser = userDomainService.getUserByEmail(request.getEmail());
7681
if ((existUser == null)) {
77-
createNewUser(request, encodedPassword);
82+
return createNewUser(request, encodedPassword);
7883
} else {
79-
updateExistingUser(existUser, encodedPassword);
84+
return updateExistingUser(existUser, encodedPassword);
8085
}
8186
}
8287

8388
//3. 만약 아예 첫 가입 유저일 때
84-
private void createNewUser(SignupRequest request, String encodedPassword) {
89+
private User createNewUser(SignupRequest request, String encodedPassword) {
8590
String nickname = userDomainService.generateUniqueNickname();
8691
Language language = languageDomainService.getLanguage(1L); //기본적으로 1번 언어로 가입 시 세팅
8792
User newUser = User.emailUser(
@@ -96,15 +101,17 @@ private void createNewUser(SignupRequest request, String encodedPassword) {
96101
userDomainService.createUser(newUser);
97102
userDomainService.createUserAuthType(new UserAuthType(newUser, AuthType.EMAIL));
98103

104+
return newUser;
99105
}
100106

101107
//4. 만약 이전에 다른 방식으로 가입했었던(소셜) 회원일 때 -> UserAuthType테이블에 인증 방식만 추가
102-
private void updateExistingUser(User existUser, String encodedPassword) {
108+
private User updateExistingUser(User existUser, String encodedPassword) {
103109
//로컬 가입(이메일)은 안되어있는데 소셜은 되어있는 경우이므로, UUID 비번을 사용자가 지정한 비번으로 변경한다.
104110
// -> 이후 비번 변경하면 User테이블에서 변경하면됨.
105111
existUser.modifyPassword(encodedPassword);
106112
UserAuthType userAuthType = new UserAuthType(existUser, AuthType.EMAIL);
107113
userDomainService.createUserAuthType(userAuthType);
114+
return existUser;
108115
}
109116

110117
@Transactional

src/main/java/org/ezcode/codetest/application/usermanagement/user/service/UserService.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
package org.ezcode.codetest.application.usermanagement.user.service;
22

3-
import java.time.LocalDate;
43
import java.time.LocalDateTime;
54
import java.time.temporal.ChronoUnit;
65
import java.util.List;
7-
import java.util.stream.Collectors;
8-
9-
import org.ezcode.codetest.application.usermanagement.user.dto.response.GrantAdminRoleResponse;
106
import org.ezcode.codetest.application.usermanagement.user.dto.response.UserDailySolvedHistoryResponse;
117
import org.ezcode.codetest.application.usermanagement.user.dto.response.UserProfileImageResponse;
128
import org.ezcode.codetest.application.usermanagement.user.dto.response.UserReviewTokenResponse;
@@ -30,8 +26,6 @@
3026
import org.ezcode.codetest.domain.user.model.entity.User;
3127
import org.ezcode.codetest.domain.user.model.entity.UserAuthType;
3228
import org.ezcode.codetest.domain.user.model.enums.AuthType;
33-
import org.ezcode.codetest.domain.user.model.enums.UserRole;
34-
import org.ezcode.codetest.domain.user.service.MailService;
3529
import org.ezcode.codetest.domain.user.service.UserDomainService;
3630
import org.ezcode.codetest.infrastructure.s3.S3Directory;
3731
import org.ezcode.codetest.infrastructure.s3.S3Uploader;

src/main/java/org/ezcode/codetest/domain/user/model/entity/User.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import jakarta.persistence.JoinColumn;
2121
import jakarta.persistence.ManyToOne;
2222
import jakarta.persistence.OneToMany;
23-
import jakarta.persistence.OneToOne;
2423
import jakarta.persistence.Table;
2524
import lombok.AccessLevel;
2625
import lombok.Builder;
@@ -96,7 +95,7 @@ public static User emailUser(String email, String password, String username, Str
9695
.nickname(nickname)
9796
.age(age)
9897
.tier(Tier.NEWBIE)
99-
.role(UserRole.ADMIN) // 테스트용
98+
.role(UserRole.USER)
10099
.isDeleted(false)
101100
.verified(false)
102101
.gitPushStatus(false)

0 commit comments

Comments
 (0)