Skip to content

Commit ada5078

Browse files
committed
♻️ refactor: UserPrincipal 필드 수정(User -> AuthenticationUser)
1 parent a26060e commit ada5078

File tree

5 files changed

+47
-61
lines changed

5 files changed

+47
-61
lines changed

backend/src/main/java/io/f1/backend/domain/user/app/CustomOAuthUserService.java

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,20 @@
22

33
import io.f1.backend.domain.stat.entity.Stat;
44
import io.f1.backend.domain.user.dao.UserRepository;
5-
import io.f1.backend.domain.user.dto.SessionUser;
5+
import io.f1.backend.domain.user.dto.AuthenticationUser;
66
import io.f1.backend.domain.user.dto.UserPrincipal;
77
import io.f1.backend.domain.user.entity.User;
8-
98
import jakarta.servlet.http.HttpSession;
10-
9+
import java.time.LocalDateTime;
10+
import java.util.Objects;
1111
import lombok.RequiredArgsConstructor;
12-
1312
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
1413
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
1514
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
1615
import org.springframework.security.oauth2.core.user.OAuth2User;
1716
import org.springframework.stereotype.Service;
1817
import org.springframework.transaction.annotation.Transactional;
1918

20-
import java.time.LocalDateTime;
21-
import java.util.Objects;
22-
2319
@Service
2420
@RequiredArgsConstructor
2521
public class CustomOAuthUserService extends DefaultOAuth2UserService {
@@ -36,12 +32,12 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic
3632
String providerId = Objects.requireNonNull(oAuth2User.getAttribute("id")).toString();
3733

3834
User user =
39-
userRepository
40-
.findByProviderAndProviderId(provider, providerId)
41-
.map(this::updateLastLogin)
42-
.orElseGet(() -> createNewUser(provider, providerId));
35+
userRepository
36+
.findByProviderAndProviderId(provider, providerId)
37+
.map(this::updateLastLogin)
38+
.orElseGet(() -> createNewUser(provider, providerId));
4339

44-
httpSession.setAttribute("OAuthUser", new SessionUser(user));
40+
httpSession.setAttribute("OAuthUser", AuthenticationUser.from(user));
4541
return new UserPrincipal(user, oAuth2User.getAttributes());
4642
}
4743

@@ -52,11 +48,11 @@ private User updateLastLogin(User user) {
5248

5349
private User createNewUser(String provider, String providerId) {
5450
User user =
55-
User.builder()
56-
.provider(provider)
57-
.providerId(providerId)
58-
.lastLogin(LocalDateTime.now())
59-
.build();
51+
User.builder()
52+
.provider(provider)
53+
.providerId(providerId)
54+
.lastLogin(LocalDateTime.now())
55+
.build();
6056

6157
Stat stat = Stat.builder().totalGames(0L).winningGames(0L).score(0L).user(user).build();
6258

backend/src/main/java/io/f1/backend/domain/user/app/UserService.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static io.f1.backend.domain.user.mapper.UserMapper.toSignupResponse;
44

55
import io.f1.backend.domain.user.dao.UserRepository;
6-
import io.f1.backend.domain.user.dto.SessionUser;
6+
import io.f1.backend.domain.user.dto.AuthenticationUser;
77
import io.f1.backend.domain.user.dto.SignupRequestDto;
88
import io.f1.backend.domain.user.dto.SignupResponseDto;
99
import io.f1.backend.domain.user.entity.User;
@@ -21,25 +21,26 @@ public class UserService {
2121

2222
@Transactional
2323
public SignupResponseDto signup(HttpSession session, SignupRequestDto signupRequest) {
24-
SessionUser sessionUser = extractSessionUser(session);
24+
AuthenticationUser authenticationUser = extractSessionUser(session);
2525

2626
String nickname = signupRequest.nickname();
2727
validateNicknameFormat(nickname);
2828
validateNicknameDuplicate(nickname);
2929

30-
User user = updateUserNickname(sessionUser.getUserId(), nickname);
30+
User user = updateUserNickname(authenticationUser.userId(), nickname);
3131
updateSessionAfterSignup(session, user);
3232
SecurityUtils.setAuthentication(user);
3333

3434
return toSignupResponse(user);
3535
}
3636

37-
private SessionUser extractSessionUser(HttpSession session) {
38-
SessionUser sessionUser = (SessionUser) session.getAttribute("OAuthUser");
39-
if (sessionUser == null) {
37+
private AuthenticationUser extractSessionUser(HttpSession session) {
38+
AuthenticationUser authenticationUser = (AuthenticationUser) session.getAttribute(
39+
"OAuthUser");
40+
if (authenticationUser == null) {
4041
throw new RuntimeException("E401001: 로그인이 필요합니다.");
4142
}
42-
return sessionUser;
43+
return authenticationUser;
4344
}
4445

4546
private void validateNicknameFormat(String nickname) {
@@ -73,6 +74,6 @@ public User updateUserNickname(Long userId, String nickname) {
7374

7475
private void updateSessionAfterSignup(HttpSession session, User user) {
7576
session.removeAttribute("OAuthUser");
76-
session.setAttribute("user", new SessionUser(user));
77+
session.setAttribute("user", AuthenticationUser.from(user));
7778
}
7879
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.f1.backend.domain.user.dto;
2+
3+
import io.f1.backend.domain.user.entity.User;
4+
import java.io.Serializable;
5+
6+
public record AuthenticationUser(Long userId, String nickname, String providerId) implements
7+
Serializable {
8+
9+
public static AuthenticationUser from(User user) {
10+
return new AuthenticationUser(
11+
user.getId(),
12+
user.getNickname(),
13+
user.getProviderId()
14+
);
15+
}
16+
}

backend/src/main/java/io/f1/backend/domain/user/dto/SessionUser.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

backend/src/main/java/io/f1/backend/domain/user/dto/UserPrincipal.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
11
package io.f1.backend.domain.user.dto;
22

33
import io.f1.backend.domain.user.entity.User;
4-
4+
import java.util.Collection;
5+
import java.util.Collections;
6+
import java.util.Map;
57
import lombok.Getter;
6-
78
import org.springframework.security.core.GrantedAuthority;
89
import org.springframework.security.core.userdetails.UserDetails;
910
import org.springframework.security.oauth2.core.user.OAuth2User;
1011

11-
import java.util.Collection;
12-
import java.util.Collections;
13-
import java.util.Map;
14-
1512
@Getter
1613
public class UserPrincipal implements UserDetails, OAuth2User {
1714

1815
public static final String ROLE_USER = "ROLE_USER";
19-
private final User user;
16+
private final AuthenticationUser authenticationUser;
2017
private final Map<String, Object> attributes;
2118

2219
public UserPrincipal(User user, Map<String, Object> attributes) {
23-
this.user = user;
20+
this.authenticationUser = AuthenticationUser.from(user);
2421
this.attributes = attributes;
2522
}
2623

@@ -30,16 +27,16 @@ public Map<String, Object> getAttributes() {
3027
}
3128

3229
public Long getUserId() {
33-
return user.getId();
30+
return authenticationUser.userId();
3431
}
3532

3633
public String getUserNickname() {
37-
return user.getNickname();
34+
return authenticationUser.nickname();
3835
}
3936

4037
@Override
4138
public String getName() {
42-
return user.getProviderId();
39+
return authenticationUser.providerId();
4340
}
4441

4542
@Override
@@ -54,7 +51,7 @@ public String getPassword() {
5451

5552
@Override
5653
public String getUsername() {
57-
return user.getProviderId();
54+
return authenticationUser.providerId();
5855
}
5956

6057
@Override

0 commit comments

Comments
 (0)