Skip to content

Commit e1acf9d

Browse files
committed
feat: 유저 세팅 로직 구현 및 AuthService에서 회원가입 처리 이관
1 parent 673da4f commit e1acf9d

2 files changed

Lines changed: 94 additions & 34 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/auth/service/AuthService.java

Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.back.web7_9_codecrete_be.domain.users.entity.SocialType;
1010
import com.back.web7_9_codecrete_be.domain.users.entity.User;
1111
import com.back.web7_9_codecrete_be.domain.users.repository.UserRepository;
12+
import com.back.web7_9_codecrete_be.domain.users.service.UserService;
1213
import com.back.web7_9_codecrete_be.domain.users.util.NicknameGenerator;
1314
import com.back.web7_9_codecrete_be.global.error.code.AuthErrorCode;
1415
import com.back.web7_9_codecrete_be.global.error.code.UserErrorCode;
@@ -19,13 +20,13 @@
1920
import org.springframework.transaction.annotation.Transactional;
2021

2122
import java.security.SecureRandom;
22-
import java.time.LocalDate;
2323

2424
@Service
2525
@RequiredArgsConstructor
2626
@Transactional
2727
public class AuthService {
2828
private final UserRepository userRepository;
29+
private final UserService userService;
2930
private final PasswordEncoder passwordEncoder;
3031
private final EmailService emailService;
3132
private final TokenService tokenService;
@@ -51,17 +52,7 @@ public void signUp(SignupRequest req) {
5152
throw new BusinessException(UserErrorCode.NICKNAME_DUPLICATED);
5253
}
5354

54-
User user = User.builder()
55-
.email(req.getEmail())
56-
.nickname(req.getNickname())
57-
.password(passwordEncoder.encode(req.getPassword()))
58-
.birth(LocalDate.parse(req.getBirth()))
59-
.profileImage(req.getProfileImage())
60-
.socialType(SocialType.LOCAL)
61-
.socialId(null)
62-
.build();
63-
64-
userRepository.save(user);
55+
userService.createLocalUser(req, passwordEncoder.encode(req.getPassword()));
6556

6657
emailService.clearVerifiedEmail(req.getEmail());
6758
}
@@ -174,17 +165,13 @@ private User registerKakaoUser(KakaoUserInfo info) {
174165

175166
String nickname = nicknameGenerator.generate();
176167

177-
User user = User.builder()
178-
.email(info.getEmail())
179-
.nickname(nickname)
180-
.password(null)
181-
.birth(null)
182-
.profileImage(info.getProfileImageUrl())
183-
.socialType(SocialType.KAKAO)
184-
.socialId(info.getSocialId())
185-
.build();
186-
187-
return userRepository.save(user);
168+
return userService.createSocialUser(
169+
info.getEmail(),
170+
nickname,
171+
info.getProfileImageUrl(),
172+
SocialType.KAKAO,
173+
info.getSocialId()
174+
);
188175
}
189176

190177
@Transactional
@@ -223,16 +210,12 @@ private User registerGoogleUser(GoogleUserInfo info) {
223210

224211
String nickname = nicknameGenerator.generate();
225212

226-
User user = User.builder()
227-
.email(info.getEmail())
228-
.nickname(nickname)
229-
.password(null)
230-
.birth(null)
231-
.profileImage(info.getProfileImageUrl())
232-
.socialType(SocialType.GOOGLE)
233-
.socialId(info.getSocialId())
234-
.build();
235-
236-
return userRepository.save(user);
213+
return userService.createSocialUser(
214+
info.getEmail(),
215+
nickname,
216+
info.getProfileImageUrl(),
217+
SocialType.GOOGLE,
218+
info.getSocialId()
219+
);
237220
}
238221
}

src/main/java/com/back/web7_9_codecrete_be/domain/users/service/UserService.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package com.back.web7_9_codecrete_be.domain.users.service;
22

33

4+
import com.back.web7_9_codecrete_be.domain.auth.dto.request.SignupRequest;
45
import com.back.web7_9_codecrete_be.domain.auth.service.TokenService;
56
import com.back.web7_9_codecrete_be.domain.email.service.EmailService;
7+
import com.back.web7_9_codecrete_be.domain.users.dto.request.UserSettingUpdateRequest;
68
import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdateNicknameRequest;
79
import com.back.web7_9_codecrete_be.domain.users.dto.request.UserUpdatePasswordRequest;
810
import com.back.web7_9_codecrete_be.domain.users.dto.response.UserResponse;
11+
import com.back.web7_9_codecrete_be.domain.users.dto.response.UserSettingResponse;
12+
import com.back.web7_9_codecrete_be.domain.users.entity.SocialType;
913
import com.back.web7_9_codecrete_be.domain.users.entity.User;
14+
import com.back.web7_9_codecrete_be.domain.users.entity.UserSetting;
1015
import com.back.web7_9_codecrete_be.domain.users.repository.UserRepository;
1116
import com.back.web7_9_codecrete_be.domain.users.repository.UserRestoreTokenRedisRepository;
1217
import com.back.web7_9_codecrete_be.global.error.code.UserErrorCode;
@@ -19,6 +24,7 @@
1924
import org.springframework.transaction.annotation.Transactional;
2025
import org.springframework.web.multipart.MultipartFile;
2126

27+
import java.time.LocalDate;
2228
import java.time.LocalDateTime;
2329
import java.util.UUID;
2430

@@ -43,6 +49,52 @@ public UserResponse getMyInfo(User user) {
4349
return UserResponse.from(user);
4450
}
4551

52+
// 회원 가입(로컬)
53+
public User createLocalUser(SignupRequest req, String encodedPassword) {
54+
55+
User user = User.builder()
56+
.email(req.getEmail())
57+
.nickname(req.getNickname())
58+
.password(encodedPassword)
59+
.birth(LocalDate.parse(req.getBirth()))
60+
.profileImage(req.getProfileImage())
61+
.socialType(SocialType.LOCAL)
62+
.socialId(null)
63+
.build();
64+
65+
user.initSetting();
66+
67+
userRepository.save(user);
68+
69+
return user;
70+
}
71+
72+
// 회원 가입(소셜)
73+
public User createSocialUser(
74+
String email,
75+
String nickname,
76+
String profileImage,
77+
SocialType socialType,
78+
String socialId
79+
) {
80+
81+
User user = User.builder()
82+
.email(email)
83+
.nickname(nickname)
84+
.password(null)
85+
.birth(null)
86+
.profileImage(profileImage)
87+
.socialType(socialType)
88+
.socialId(socialId)
89+
.build();
90+
91+
user.initSetting();
92+
93+
userRepository.save(user);
94+
95+
return user;
96+
}
97+
4698
// 닉네임 수정
4799
public UserResponse updateNickname(User user, UserUpdateNicknameRequest req) {
48100
validateActiveUser(user);
@@ -176,4 +228,29 @@ public void restoreByToken(String token) {
176228
userRestoreTokenRedisRepository.delete(token);
177229
}
178230

231+
@Transactional(readOnly = true)
232+
public UserSettingResponse getMySettings(User user) {
233+
validateActiveUser(user);
234+
235+
User managedUser = userRepository.findById(user.getId())
236+
.orElseThrow(() -> new BusinessException(UserErrorCode.USER_NOT_FOUND));
237+
238+
return UserSettingResponse.from(managedUser.getUserSetting());
239+
}
240+
241+
public void updateMySettings(User user, UserSettingUpdateRequest req) {
242+
validateActiveUser(user);
243+
244+
User managedUser = userRepository.findById(user.getId())
245+
.orElseThrow(() -> new BusinessException(UserErrorCode.USER_NOT_FOUND));
246+
247+
UserSetting setting = managedUser.getUserSetting();
248+
249+
if (req.getEmailNotifications() != null) {
250+
setting.changeEmailNotifications(req.getEmailNotifications());
251+
}
252+
if (req.getDarkMode() != null) {
253+
setting.changeDarkMode(req.getDarkMode());
254+
}
255+
}
179256
}

0 commit comments

Comments
 (0)