Skip to content

Commit ec27eed

Browse files
committed
feature : 유저 로그인 타입 추가
1 parent dcefa46 commit ec27eed

File tree

8 files changed

+41
-9
lines changed

8 files changed

+41
-9
lines changed

src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/request/ModifyUserInfoRequest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ public record ModifyUserInfoRequest(
1717
String introduction,
1818

1919
@Schema(description = "나이", example = "28")
20-
Integer age
20+
Integer age,
21+
22+
@Schema(description = "언어 id", example = "1")
23+
Long languageId
2124
) {
2225
}

src/main/java/org/ezcode/codetest/application/usermanagement/user/dto/response/UserInfoResponse.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.ezcode.codetest.application.usermanagement.user.dto.response;
22

3+
import java.util.List;
4+
35
import org.ezcode.codetest.domain.language.model.entity.Language;
46
import org.ezcode.codetest.domain.user.model.entity.User;
7+
import org.ezcode.codetest.domain.user.model.enums.AuthType;
58
import org.ezcode.codetest.domain.user.model.enums.Tier;
69
import org.ezcode.codetest.domain.user.model.enums.UserRole;
710

@@ -51,11 +54,15 @@ public class UserInfoResponse {
5154
@Schema(description = "사용자가 선택한 언어. 기본적으로 1번 언어로 세팅됩니다", example = "1")
5255
private final Language language;
5356

57+
@Schema(description = "사용자가 가입한 경로(자체/소셜)의 리스트를 보여줍니다", example = "[GOOGLE, GITHUB, EMAIL]")
58+
private final List<AuthType> userAuthTypes;
59+
5460
@Builder
5561
public UserInfoResponse(String username, String email, String nickname, UserRole userRole, Tier tier,
5662
Integer age, String githubUrl, String blogUrl, String profileImageUrl, String introduction, boolean verified,
5763
int totalSolvedCount,
58-
Language language) {
64+
Language language,
65+
List<AuthType> userAuthTypes) {
5966
this.username = username;
6067
this.email = email;
6168
this.nickname = nickname;
@@ -69,6 +76,7 @@ public UserInfoResponse(String username, String email, String nickname, UserRole
6976
this.verified = verified;
7077
this.totalSolvedCount = totalSolvedCount;
7178
this.language = language;
79+
this.userAuthTypes = userAuthTypes;
7280
}
7381

7482
public static UserInfoResponse fromEntity(User user) {

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@
33
import java.time.LocalDateTime;
44
import java.time.temporal.ChronoUnit;
55
import java.util.List;
6+
import java.util.stream.Collectors;
67

78
import org.ezcode.codetest.application.usermanagement.user.dto.response.GrantAdminRoleResponse;
89
import org.ezcode.codetest.application.usermanagement.user.dto.response.UserDailySolvedHistoryResponse;
910
import org.ezcode.codetest.application.usermanagement.user.dto.response.UserProfileImageResponse;
1011
import org.ezcode.codetest.application.usermanagement.user.dto.response.UserReviewTokenResponse;
1112
import org.ezcode.codetest.application.usermanagement.user.model.UsersByWeek;
13+
import org.ezcode.codetest.domain.language.model.entity.Language;
14+
import org.ezcode.codetest.domain.language.service.LanguageDomainService;
1215
import org.ezcode.codetest.domain.submission.dto.DailyCorrectCount;
1316
import org.ezcode.codetest.domain.submission.dto.WeeklySolveCount;
1417
import org.ezcode.codetest.application.usermanagement.user.dto.request.ChangeUserPasswordRequest;
@@ -23,6 +26,7 @@
2326
import org.ezcode.codetest.domain.user.exception.code.UserExceptionCode;
2427
import org.ezcode.codetest.domain.user.model.entity.AuthUser;
2528
import org.ezcode.codetest.domain.user.model.entity.User;
29+
import org.ezcode.codetest.domain.user.model.entity.UserAuthType;
2630
import org.ezcode.codetest.domain.user.model.enums.AuthType;
2731
import org.ezcode.codetest.domain.user.model.enums.UserRole;
2832
import org.ezcode.codetest.domain.user.service.MailService;
@@ -46,6 +50,7 @@
4650
public class UserService {
4751

4852
private final UserDomainService userDomainService;
53+
private final LanguageDomainService languageDomainService;
4954
private final SubmissionDomainService submissionDomainService;
5055
private final RedisTemplate<String, String> redisTemplate;
5156
private final S3Uploader s3Uploader;
@@ -55,6 +60,9 @@ public UserInfoResponse getUserInfo(AuthUser authUser) {
5560
log.info("authUserEmail: {}, authUserID : {}", authUser.getEmail(), authUser.getId());
5661
User user = userDomainService.getUserById(authUser.getId());
5762
int userSubmissionCount = submissionDomainService.findSubmissionCountByUserId(user.getId());
63+
List<UserAuthType> userAuthTypes = userDomainService.getUserAuthTypesByUser(user);
64+
List<AuthType> authTypes = userAuthTypes.stream()
65+
.map(UserAuthType::getAuthType).toList();
5866

5967
return UserInfoResponse.builder()
6068
.username(user.getUsername())
@@ -70,19 +78,22 @@ public UserInfoResponse getUserInfo(AuthUser authUser) {
7078
.verified(user.isVerified())
7179
.totalSolvedCount(userSubmissionCount)
7280
.language(user.getLanguage())
81+
.userAuthTypes(authTypes)
7382
.build();
7483
}
7584

7685
@Transactional
7786
public UserInfoResponse modifyUserInfo(AuthUser authUser, ModifyUserInfoRequest request, MultipartFile image) {
7887
User user = userDomainService.getUserById(authUser.getId());
88+
Language findLangauge = languageDomainService.getLanguage(request.languageId());
7989

8090
user.modifyUserInfo(
8191
request.nickname(),
8292
request.githubUrl(),
8393
request.blogUrl(),
8494
request.introduction(),
85-
request.age());
95+
request.age(),
96+
findLangauge);
8697

8798
if (image != null && !image.isEmpty()) {
8899
String profileImageUrl = uploadProfileImage(image);
@@ -106,6 +117,7 @@ public UserInfoResponse modifyUserInfo(AuthUser authUser, ModifyUserInfoRequest
106117
.githubUrl(user.getGithubUrl())
107118
.userRole(user.getRole())
108119
.tier(user.getTier())
120+
.language(user.getLanguage())
109121
.build();
110122
}
111123

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,13 @@ public User(String email, String password, String username, String nickname,
162162
유저 정보 업데이트
163163
- 만약 입력 값이 없다면, 기존 값 유지
164164
*/
165-
public void modifyUserInfo(String nickname, String githubUrl, String blogUrl, String introduction, Integer age){
165+
public void modifyUserInfo(String nickname, String githubUrl, String blogUrl, String introduction, Integer age, Language language) {
166166
this.nickname = (nickname == null || nickname.isBlank()) ? this.nickname : nickname;
167167
this.githubUrl = (githubUrl == null || githubUrl.isBlank()) ? this.githubUrl : githubUrl;
168168
this.blogUrl = (blogUrl == null || blogUrl.isBlank()) ? this.blogUrl : blogUrl;
169169
this.introduction = (introduction == null || introduction.isBlank()) ? this.introduction : introduction;
170170
this.age = (age == null) ? this.age : age;
171+
this.language = (language == null) ? this.language : language;
171172
}
172173

173174

src/main/java/org/ezcode/codetest/domain/user/repository/UserAuthTypeRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ public interface UserAuthTypeRepository {
1010
void createUserAuthType(UserAuthType userAuthType);
1111

1212
List<AuthType> getUserAuthType(User user);
13+
14+
List<UserAuthType> getUserAuthTypesByUser(User user);
1315
}

src/main/java/org/ezcode/codetest/domain/user/service/UserDomainService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,5 +128,8 @@ public User getUserByEmail(String email) {
128128
return userRepository.getUserByEmail(email);
129129
}
130130

131+
public List<UserAuthType> getUserAuthTypesByUser(User user) {
132+
return userAuthTypeRepository.getUserAuthTypesByUser(user);
133+
}
131134

132135
}

src/main/java/org/ezcode/codetest/infrastructure/persistence/repository/user/UserAuthTypeRepositoryImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,11 @@ public List<AuthType> getUserAuthType(User user) {
2727
.map(UserAuthType::getAuthType).toList();
2828
}
2929

30+
@Override
31+
public List<UserAuthType> getUserAuthTypesByUser(User user) {
32+
userAuthTypeJpaRepository.findUserAuthTypeByUser(user).stream()
33+
.map(UserAuthType::getAuthType).toList();
34+
return List.of();
35+
}
36+
3037
}

src/main/java/org/ezcode/codetest/presentation/usermanagement/UserController.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.ezcode.codetest.presentation.usermanagement;
22

3+
import org.ezcode.codetest.application.submission.dto.response.language.LanguageResponse;
34
import org.ezcode.codetest.application.usermanagement.user.dto.request.ModifyUserInfoRequest;
45
import org.ezcode.codetest.application.usermanagement.user.dto.request.ChangeUserPasswordRequest;
56
import org.ezcode.codetest.application.usermanagement.user.dto.response.ChangeUserPasswordResponse;
@@ -16,13 +17,9 @@
1617
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1718
import org.springframework.web.bind.annotation.DeleteMapping;
1819
import org.springframework.web.bind.annotation.GetMapping;
19-
import org.springframework.web.bind.annotation.PatchMapping;
20-
import org.springframework.web.bind.annotation.PathVariable;
21-
import org.springframework.web.bind.annotation.PostMapping;
2220
import org.springframework.web.bind.annotation.PutMapping;
2321
import org.springframework.web.bind.annotation.RequestBody;
2422
import org.springframework.web.bind.annotation.RequestMapping;
25-
import org.springframework.web.bind.annotation.RequestParam;
2623
import org.springframework.web.bind.annotation.RequestPart;
2724
import org.springframework.web.bind.annotation.RestController;
2825
import org.springframework.web.multipart.MultipartFile;
@@ -99,5 +96,4 @@ public ResponseEntity<UserDailySolvedHistoryResponse> getUserDailySolvedHistory(
9996
){
10097
return ResponseEntity.status(HttpStatus.OK).body(userService.getUserDailySolvedHistory(authUser));
10198
}
102-
10399
}

0 commit comments

Comments
 (0)