Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
e4120f9
MOSU-3 feat: security.yml 추가
wlgns12370 Jul 1, 2025
5ae7b40
MOSU-3 feat: redis 설정 추가
wlgns12370 Jul 1, 2025
b6a4ebf
MOSU-3 fix: User id 타입 및 Role 변경
wlgns12370 Jul 1, 2025
efecd59
MOSU-3 feat: OAuth User Domain 구현
wlgns12370 Jul 1, 2025
45d61a8
MOSU-3 feat: Token 구현
wlgns12370 Jul 1, 2025
1cb452b
MOSU-3 feat: OAuth main 기능 구현
wlgns12370 Jul 1, 2025
0930c92
MOSU-3 feat: OAuth 설정 구현
wlgns12370 Jul 1, 2025
cb5dae9
MOSU-3 feat: TokenResponse 구현
wlgns12370 Jul 1, 2025
1f7ab21
MOSU-3 feat: RefreshToken 구현
wlgns12370 Jul 1, 2025
d6aa4c4
MOSU-3 feat: PrincipalDetails 구현
wlgns12370 Jul 1, 2025
4987967
MOSU-3 fix: 주석 제거 및 yml 파일명 변경
wlgns12370 Jul 1, 2025
51491dc
MOSU-3 fix: docker Redis 제거
wlgns12370 Jul 2, 2025
3137b54
MOSU-3 fix: TokenExceptionFilter 생성자 주입
wlgns12370 Jul 2, 2025
88f6a0d
MOSU-3 fix: 메서드 순서 조정
wlgns12370 Jul 2, 2025
48e04c3
MOSU-3 feat: Redis 연결 yml
wlgns12370 Jul 2, 2025
27b9201
MOSU-3 fix: final 제거
wlgns12370 Jul 2, 2025
14a035c
MOSU-3 fix: private static final 및 private 메서드 분리
wlgns12370 Jul 2, 2025
981d300
MOSU-3 feat: Kakao OAuth NPE 처리
wlgns12370 Jul 2, 2025
b3d7a55
MOSU-3 feat: OAuthProvider 구현
wlgns12370 Jul 2, 2025
f9c8b81
MOSU-3 feat: Swagger 구현
wlgns12370 Jul 2, 2025
ab9d08a
MOSU-3 fix: string.format 제거
wlgns12370 Jul 2, 2025
ee5c734
Merge remote-tracking branch 'origin/develop' into feature/mosu-3
wlgns12370 Jul 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'

developmentOnly 'org.springframework.boot:spring-boot-devtools'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// swagger
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0"

// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ public class SecurityConfig {
public static final List<String> clients = List.of(
"http://localhost:3000",
"http://localhost:8080",
"https://mosuedu.com"
"https://mosuedu.com",
"https://api.mosuedu.com"
);

@Bean
Expand All @@ -57,19 +58,13 @@ public SecurityFilterChain securityFilterChain(final HttpSecurity http) throws E
.logout(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(authorize -> authorize
.requestMatchers(
"/swagger-ui/**",
"/v3/api-docs/**",
"/oauth2/**",
"/api/v1/auth/**",
"/api/v1/login/**"
"/**"
)
.permitAll()
.requestMatchers(
"/api/v1/admin/**"
)
.hasRole("ADMIN")
.anyRequest()
.hasAnyRole("USER")
)
.oauth2Login(oauth2 -> oauth2.redirectionEndpoint(redirection ->
redirection.baseUri("/login/oauth2/code/{registrationId}"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ public class SwaggerConfig {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("MOSU API 문서")
.version("1.0.0"));
.info(new Info()
.title("MOSU API 문서")
.version("1.0.0")
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.view.RedirectView;
import org.springframework.web.util.UriComponentsBuilder;

import static life.mosu.mosuserver.presentation.oauth.AuthorizationRequestRedirectResolver.REDIRECT_PARAM_KEY;


@RestController
@RequiredArgsConstructor
@RequestMapping("/auth")
public class OAuthController {

@GetMapping("/login/{registrationId}")
public RedirectView login(@PathVariable String registrationId, @RequestParam(REDIRECT_PARAM_KEY) String redirect) {
final String url = String.format(
"/oauth2/authorization/%s?%s=%s",
registrationId,
REDIRECT_PARAM_KEY,
redirect
);
final String url = UriComponentsBuilder
.fromPath("/oauth2/authorization/{registrationId}")
.queryParam(REDIRECT_PARAM_KEY, redirect)
.buildAndExpand(registrationId)
.toUriString();
return new RedirectView(url);
}
}
5 changes: 1 addition & 4 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ spring:
import:
- optional:file:.env[.properties]
- security-config.yml
- swagger-config.yml
datasource:
url: ${DB_URL}
username: ${DB_USERNAME}
Expand Down Expand Up @@ -43,10 +44,6 @@ spring:
port: ${REDIS_EXPORTER}
password: ${REDIS_PASSWORD}

springdoc:
swagger-ui:
path: /swagger

management:
endpoints:
web:
Expand Down
15 changes: 15 additions & 0 deletions src/main/resources/swagger-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
springdoc:
packages-to-scan: life.mosu.mosuserver
default-consumes-media-type: application/json;charset=UTF-8
default-produces-media-type: application/json;charset=UTF-8
cache:
disabled: true
api-docs:
path: /api-docs/json
groups:
enabled: true
swagger-ui:
enabled: true
path: /swagger
tags-sorter: alpha
operations-sorter: alpha