Skip to content

Commit f27f41c

Browse files
authored
Merge pull request #262 from Probono-GCC/develop
Develop
2 parents 24faa87 + 3478b45 commit f27f41c

File tree

7 files changed

+46
-7
lines changed

7 files changed

+46
-7
lines changed

src/main/java/probono/gcc/school/jwt/JWTFilter.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.security.core.context.SecurityContextHolder;
1212
import org.springframework.web.filter.OncePerRequestFilter;
1313
import probono.gcc.school.model.dto.CustomUserDetails;
14+
import probono.gcc.school.model.dto.users.UserLoginDTO;
1415
import probono.gcc.school.model.entity.Users;
1516
import probono.gcc.school.model.enums.Role;
1617

@@ -55,10 +56,12 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
5556
String role = jwtUtil.getRole(token);
5657

5758
//userEntity를 생성하여 값 set
58-
Users user = new Users();
59-
user.setUsername(username);
60-
user.setPassword("temppassword");
61-
user.setRole(Role.valueOf(role));
59+
//Users user = new Users();
60+
// user.setUsername(username);
61+
// user.setPassword("temppassword");
62+
// user.setRole(Role.valueOf(role));
63+
64+
UserLoginDTO user = new UserLoginDTO(username, "temppassword", Role.valueOf(role));
6265

6366
//UserDetails에 회원 정보 객체 담기
6467
CustomUserDetails customUserDetails = new CustomUserDetails(user);

src/main/java/probono/gcc/school/jwt/LoginFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public Authentication attemptAuthentication(HttpServletRequest request,
4040
UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(
4141
username, password, null);
4242

43-
sample.stop(meterRegistry.timer("login.step", "phase", "login_authentication"));
43+
//sample.stop(meterRegistry.timer("login.step", "phase", "login_authentication"));
4444

4545
// 인증 매니저 호출 (여기까지의 시간 측정 포함)
4646
Authentication authentication = authenticationManager.authenticate(authToken);

src/main/java/probono/gcc/school/model/dto/CustomUserDetails.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
import org.springframework.security.core.GrantedAuthority;
77
import org.springframework.security.core.userdetails.UserDetails;
88
import probono.gcc.school.model.entity.Users;
9+
import probono.gcc.school.model.projection.UserLoginProjection;
910

1011
@RequiredArgsConstructor
1112
public class CustomUserDetails implements UserDetails {
1213

13-
private final Users users;
14+
//private final Users users;
15+
private final UserLoginProjection users;
1416

1517
@Override
1618
public Collection<? extends GrantedAuthority> getAuthorities() {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package probono.gcc.school.model.dto.users;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import probono.gcc.school.model.enums.Role;
6+
import probono.gcc.school.model.projection.UserLoginProjection;
7+
8+
@Data
9+
@AllArgsConstructor
10+
public class UserLoginDTO implements UserLoginProjection {
11+
private String username;
12+
private String password;
13+
private Role role;
14+
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package probono.gcc.school.model.projection;
2+
3+
import probono.gcc.school.model.enums.Role;
4+
5+
public interface UserLoginProjection {
6+
String getUsername();
7+
String getPassword();
8+
Role getRole();
9+
}

src/main/java/probono/gcc/school/repository/UserRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import probono.gcc.school.model.enums.Grades;
1212
import probono.gcc.school.model.enums.Role;
1313
import probono.gcc.school.model.enums.Status;
14+
import probono.gcc.school.model.projection.UserLoginProjection;
1415

1516
public interface UserRepository extends JpaRepository<Users, Long> {
1617

@@ -39,4 +40,7 @@ Page<Users> findByStatusAndRoleAndGradeNot(Status status, Role role, Grades grad
3940
PageRequest pageRequest);
4041

4142
List<Users> findByStatusAndRoleAndGradeNot(Status status, Role role, Grades grades);
43+
44+
// Projection용 메서드 추가
45+
Optional<UserLoginProjection> findProjectedByUsername(String username);
4246
}

src/main/java/probono/gcc/school/service/CustomUserDetailsService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.springframework.stereotype.Service;
88
import probono.gcc.school.model.dto.CustomUserDetails;
99
import probono.gcc.school.model.entity.Users;
10+
import probono.gcc.school.model.projection.UserLoginProjection;
1011
import probono.gcc.school.repository.UserRepository;
1112
import io.micrometer.core.instrument.MeterRegistry;
1213
import io.micrometer.core.instrument.Timer;
@@ -22,7 +23,12 @@ public class CustomUserDetailsService implements UserDetailsService {
2223
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
2324
Timer.Sample sample = Timer.start(meterRegistry);
2425
/*DB 조회 - 시작*/
25-
Users userData = userRepository.findByUsername(username).get();
26+
// Users userData = userRepository.findByUsername(username).get();
27+
28+
// Projection으로 유저 정보 조회
29+
UserLoginProjection userData = userRepository.findProjectedByUsername(username)
30+
.orElseThrow(() -> new UsernameNotFoundException("User not found: " + username));
31+
2632
/*끝*/
2733
sample.stop(meterRegistry.timer("login.step", "phase", "DB_user_lookup"));
2834
if (userData != null) {

0 commit comments

Comments
 (0)