Skip to content

Commit f46efb3

Browse files
committed
Merge branch 'develop'
2 parents 6263107 + 3de9690 commit f46efb3

File tree

3 files changed

+101
-108
lines changed

3 files changed

+101
-108
lines changed

src/main/java/com/umc/goodgame/domain/admin/controller/AdminTestController.java

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
11
package com.umc.goodgame.domain.admin.controller;
22

3-
import com.umc.goodgame.domain.auth.dto.AuthResponseDto;
43
import com.umc.goodgame.domain.recommendation.service.DefaultRecommendationService;
5-
import com.umc.goodgame.domain.user.entity.Role;
6-
import com.umc.goodgame.domain.user.entity.User;
7-
import com.umc.goodgame.domain.user.repository.UserRepository;
8-
import com.umc.goodgame.global.exception.CustomException;
94
import com.umc.goodgame.global.response.ApiResponse;
10-
import com.umc.goodgame.global.response.ErrorCode;
115
import com.umc.goodgame.global.response.SuccessCode;
12-
import com.umc.goodgame.global.security.jwt.JwtTokenProvider;
136
import io.swagger.v3.oas.annotations.Operation;
147
import io.swagger.v3.oas.annotations.tags.Tag;
158
import lombok.RequiredArgsConstructor;
@@ -28,8 +21,6 @@
2821
@Tag(name = "Admin Test", description = "관리자 테스트용 API")
2922
public class AdminTestController {
3023

31-
private final UserRepository userRepository;
32-
private final JwtTokenProvider jwtTokenProvider;
3324
private final DefaultRecommendationService defaultRecommendationService;
3425

3526
@GetMapping("/verify")
@@ -39,89 +30,6 @@ public ApiResponse<String> adminTest() {
3930
return ApiResponse.success(SuccessCode.OK, "admin access verified");
4031
}
4132

42-
@PostMapping("/create")
43-
@Operation(
44-
summary = "관리자 계정 생성 (테스트용)",
45-
description = "테스트용 관리자 계정을 생성합니다. 이미 관리자 계정이 존재하면 오류를 반환합니다."
46-
)
47-
@Transactional
48-
public ApiResponse<AuthResponseDto.UserInfo> createAdminAccount() {
49-
log.info("[AdminTestController.createAdminAccount] Creating admin account");
50-
51-
// 이미 ADMIN 역할을 가진 사용자가 있는지 확인
52-
boolean adminExists = userRepository.findAll().stream()
53-
.anyMatch(user -> user.getRole() == Role.ADMIN);
54-
55-
if (adminExists) {
56-
log.warn("[AdminTestController.createAdminAccount] Admin account already exists");
57-
throw new CustomException(ErrorCode.ADMIN_ALREADY_EXISTS);
58-
}
59-
60-
// 관리자 계정 생성
61-
User admin = User.builder()
62-
.googleId("admin-test-user")
63-
.email("admin@test.local")
64-
.name("관리자")
65-
.profileImage(null)
66-
.role(Role.ADMIN)
67-
.build();
68-
69-
User savedAdmin = userRepository.save(admin);
70-
log.info("[AdminTestController.createAdminAccount] Admin account created with id: {}", savedAdmin.getId());
71-
72-
return ApiResponse.success(
73-
SuccessCode.CREATED,
74-
AuthResponseDto.UserInfo.builder()
75-
.id(savedAdmin.getId())
76-
.email(savedAdmin.getEmail())
77-
.name(savedAdmin.getName())
78-
.profileImage(savedAdmin.getProfileImage())
79-
.role(savedAdmin.getRole())
80-
.build()
81-
);
82-
}
83-
84-
@PostMapping("/token")
85-
@Operation(
86-
summary = "관리자 JWT 토큰 발급 (테스트용)",
87-
description = "관리자 계정의 JWT 토큰을 발급합니다. 관리자 계정이 없으면 오류를 반환합니다."
88-
)
89-
@Transactional(readOnly = true)
90-
public ApiResponse<AuthResponseDto.LoginResponse> issueAdminToken() {
91-
log.info("[AdminTestController.issueAdminToken] Issuing admin token");
92-
93-
// ADMIN 역할을 가진 사용자 찾기
94-
User admin = userRepository.findAll().stream()
95-
.filter(user -> user.getRole() == Role.ADMIN)
96-
.findFirst()
97-
.orElseThrow(() -> {
98-
log.warn("[AdminTestController.issueAdminToken] Admin account not found");
99-
return new CustomException(ErrorCode.MEMBER_NOT_FOUND);
100-
});
101-
102-
String accessToken = jwtTokenProvider.createAccessToken(admin.getId(), admin.getRole());
103-
String refreshToken = jwtTokenProvider.createRefreshToken(admin.getId(), admin.getRole());
104-
105-
log.info("[AdminTestController.issueAdminToken] Admin token issued for userId: {}", admin.getId());
106-
107-
return ApiResponse.success(
108-
SuccessCode.OK,
109-
AuthResponseDto.LoginResponse.builder()
110-
.accessToken(accessToken)
111-
.refreshToken(refreshToken)
112-
.accessTokenExpiresIn(jwtTokenProvider.getAccessTokenExpiry())
113-
.isNewUser(false)
114-
.user(AuthResponseDto.UserInfo.builder()
115-
.id(admin.getId())
116-
.email(admin.getEmail())
117-
.name(admin.getName())
118-
.profileImage(admin.getProfileImage())
119-
.role(admin.getRole())
120-
.build())
121-
.build()
122-
);
123-
}
124-
12533
@Operation(summary = "기본 추천 전체 삭제", description = "DefaultRecommendation 테이블을 비웁니다.")
12634
@DeleteMapping("/default-recommendations")
12735
@Transactional

src/main/java/com/umc/goodgame/domain/auth/controller/DevAuthController.java

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import com.umc.goodgame.domain.user.entity.Role;
55
import com.umc.goodgame.domain.user.entity.User;
66
import com.umc.goodgame.domain.user.repository.UserRepository;
7+
import com.umc.goodgame.global.exception.CustomException;
78
import com.umc.goodgame.global.response.ApiResponse;
9+
import com.umc.goodgame.global.response.ErrorCode;
10+
import com.umc.goodgame.global.response.SuccessCode;
811
import com.umc.goodgame.global.security.jwt.JwtTokenProvider;
912
import io.swagger.v3.oas.annotations.Operation;
1013
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -98,4 +101,89 @@ private User createDefaultTestUser(Role role) {
98101
.build();
99102
return userRepository.save(testUser);
100103
}
104+
105+
@PostMapping("/create-admin")
106+
@Operation(
107+
summary = "관리자 계정 생성 (테스트용)",
108+
description = "테스트용 관리자 계정을 생성합니다. 이미 관리자 계정이 존재하면 오류를 반환합니다. " +
109+
"**⚠️ 개발/테스트 환경에서만 사용 가능합니다.**"
110+
)
111+
@Transactional
112+
public ApiResponse<AuthResponseDto.UserInfo> createAdminAccount() {
113+
log.info("[DevAuthController.createAdminAccount] Creating admin account");
114+
115+
// 이미 ADMIN 역할을 가진 사용자가 있는지 확인
116+
boolean adminExists = userRepository.findAll().stream()
117+
.anyMatch(user -> user.getRole() == Role.ADMIN);
118+
119+
if (adminExists) {
120+
log.warn("[DevAuthController.createAdminAccount] Admin account already exists");
121+
throw new CustomException(ErrorCode.ADMIN_ALREADY_EXISTS);
122+
}
123+
124+
// 관리자 계정 생성
125+
User admin = User.builder()
126+
.googleId("admin-test-user")
127+
.email("admin@test.local")
128+
.name("관리자")
129+
.profileImage(null)
130+
.role(Role.ADMIN)
131+
.build();
132+
133+
User savedAdmin = userRepository.save(admin);
134+
log.info("[DevAuthController.createAdminAccount] Admin account created with id: {}", savedAdmin.getId());
135+
136+
return ApiResponse.success(
137+
SuccessCode.CREATED,
138+
AuthResponseDto.UserInfo.builder()
139+
.id(savedAdmin.getId())
140+
.email(savedAdmin.getEmail())
141+
.name(savedAdmin.getName())
142+
.profileImage(savedAdmin.getProfileImage())
143+
.role(savedAdmin.getRole())
144+
.build()
145+
);
146+
}
147+
148+
@PostMapping("/token-admin")
149+
@Operation(
150+
summary = "관리자 JWT 토큰 발급 (테스트용)",
151+
description = "관리자 계정의 JWT 토큰을 발급합니다. 관리자 계정이 없으면 오류를 반환합니다. " +
152+
"**⚠️ 개발/테스트 환경에서만 사용 가능합니다.**"
153+
)
154+
@Transactional(readOnly = true)
155+
public ApiResponse<AuthResponseDto.LoginResponse> issueAdminToken() {
156+
log.info("[DevAuthController.issueAdminToken] Issuing admin token");
157+
158+
// ADMIN 역할을 가진 사용자 찾기
159+
User admin = userRepository.findAll().stream()
160+
.filter(user -> user.getRole() == Role.ADMIN)
161+
.findFirst()
162+
.orElseThrow(() -> {
163+
log.warn("[DevAuthController.issueAdminToken] Admin account not found");
164+
return new CustomException(ErrorCode.MEMBER_NOT_FOUND);
165+
});
166+
167+
String accessToken = jwtTokenProvider.createAccessToken(admin.getId(), admin.getRole());
168+
String refreshToken = jwtTokenProvider.createRefreshToken(admin.getId(), admin.getRole());
169+
170+
log.info("[DevAuthController.issueAdminToken] Admin token issued for userId: {}", admin.getId());
171+
172+
return ApiResponse.success(
173+
SuccessCode.OK,
174+
AuthResponseDto.LoginResponse.builder()
175+
.accessToken(accessToken)
176+
.refreshToken(refreshToken)
177+
.accessTokenExpiresIn(jwtTokenProvider.getAccessTokenExpiry())
178+
.isNewUser(false)
179+
.user(AuthResponseDto.UserInfo.builder()
180+
.id(admin.getId())
181+
.email(admin.getEmail())
182+
.name(admin.getName())
183+
.profileImage(admin.getProfileImage())
184+
.role(admin.getRole())
185+
.build())
186+
.build()
187+
);
188+
}
101189
}

src/main/java/com/umc/goodgame/global/config/SecurityConfig.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,18 @@ public class SecurityConfig {
3333

3434
// 인증 없이 접근 가능한 경로
3535
private static final String[] PUBLIC_ENDPOINTS = {
36-
"/**",
37-
// // Root (Swagger 리다이렉트)
38-
// "/",
39-
// // Actuator
40-
// "/actuator/health",
41-
// // Auth (로그인, 콜백, 토큰 재발급, 개발용 토큰)
42-
// "/auth/**",
43-
// // Admin Test (테스트용 관리자 계정 생성/토큰 발급)
44-
// "/admin/test/**",
45-
// // H2 Console (local only)
46-
// "/h2-console/**",
47-
// // Swagger
48-
// "/swagger-ui/**",
49-
// "/swagger-ui.html",
50-
// "/v3/api-docs/**",
36+
// Root (Swagger 리다이렉트)
37+
"/",
38+
// Actuator
39+
"/actuator/health",
40+
// Auth (로그인, 콜백, 토큰 재발급, 개발용 토큰)
41+
"/auth/**",
42+
// H2 Console (local only)
43+
"/h2-console/**",
44+
// Swagger
45+
"/swagger-ui/**",
46+
"/swagger-ui.html",
47+
"/v3/api-docs/**",
5148
};
5249

5350
@Bean
@@ -75,7 +72,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
7572
// 권한 설정
7673
.authorizeHttpRequests(auth -> auth
7774
.requestMatchers(PUBLIC_ENDPOINTS).permitAll()
78-
.requestMatchers("/admin/**").hasRole("ADMIN")
75+
.requestMatchers("/api/admin/**").hasAuthority("ROLE_ADMIN")
7976
.anyRequest().authenticated()
8077
)
8178

0 commit comments

Comments
 (0)