diff --git a/backend/src/main/java/org/sejongisc/backend/common/auth/config/OAuth2SuccessHandler.java b/backend/src/main/java/org/sejongisc/backend/common/auth/config/OAuth2SuccessHandler.java index 348599f4..85b2cea3 100644 --- a/backend/src/main/java/org/sejongisc/backend/common/auth/config/OAuth2SuccessHandler.java +++ b/backend/src/main/java/org/sejongisc/backend/common/auth/config/OAuth2SuccessHandler.java @@ -29,6 +29,7 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -101,11 +102,26 @@ public void onAuthenticationSuccess( // 5. RefreshToken 저장(DB or Redis) refreshTokenService.saveOrUpdateToken(user.getUserId(), refreshToken); - boolean isProd = Arrays.asList(env.getActiveProfiles()).contains("prod"); + String[] activeProfiles = env.getActiveProfiles(); + List profiles = Arrays.asList(activeProfiles); + + boolean isProd = profiles.contains("prod"); + boolean isDev = profiles.contains("dev"); + +// SameSite, Secure 설정 (dev도 prod와 동일하게) + String sameSite = (isProd || isDev) ? "None" : "Lax"; + boolean secure = (isProd || isDev); + +// 도메인 설정 + String domain; + if (isProd) { + domain = "sjusisc.com"; // 운영 도메인 + } else if (isDev) { + domain = "sisc-web.duckdns.org"; // 개발 도메인 + } else { + domain = "localhost"; // 기본값 + } - String sameSite = isProd ? "None" : "Lax"; - boolean secure = isProd; - String domain = isProd ? "sisc-web.duckdns.org" : "localhost"; diff --git a/backend/src/main/java/org/sejongisc/backend/common/auth/config/SecurityConfig.java b/backend/src/main/java/org/sejongisc/backend/common/auth/config/SecurityConfig.java index d2ee6a32..fb311ce7 100644 --- a/backend/src/main/java/org/sejongisc/backend/common/auth/config/SecurityConfig.java +++ b/backend/src/main/java/org/sejongisc/backend/common/auth/config/SecurityConfig.java @@ -44,6 +44,9 @@ public class SecurityConfig { private boolean isProd() { return List.of(env.getActiveProfiles()).contains("prod"); } + private boolean isDev() { + return List.of(env.getActiveProfiles()).contains("dev"); + } @Bean public AuthorizationRequestRepository authorizationRequestRepository() { @@ -72,8 +75,11 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti .successHandler(oAuth2SuccessHandler) .failureHandler((req, res, ex) -> { if (isProd()) { + res.sendRedirect("https://sjusisc.com/oauth/fail"); + }else if(isDev()){ res.sendRedirect("https://sisc-web.duckdns.org/oauth/fail"); - } else { + } + else { res.sendRedirect("http://localhost:5173/oauth/fail"); } }) @@ -121,7 +127,8 @@ public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration config = new CorsConfiguration(); config.setAllowedOriginPatterns(List.of( "http://localhost:5173", - "https://sisc-web.duckdns.org" + "https://sisc-web.duckdns.org", + "https://sjusisc.com" )); config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS")); config.setAllowedHeaders(List.of("*")); diff --git a/backend/src/main/java/org/sejongisc/backend/common/config/PrimaryDataSourceConfig.java b/backend/src/main/java/org/sejongisc/backend/common/config/PrimaryDataSourceConfig.java index 0a954cb6..2d0fbf72 100644 --- a/backend/src/main/java/org/sejongisc/backend/common/config/PrimaryDataSourceConfig.java +++ b/backend/src/main/java/org/sejongisc/backend/common/config/PrimaryDataSourceConfig.java @@ -21,6 +21,7 @@ @Configuration @EnableTransactionManagement +@Profile("dev") @EnableJpaRepositories( basePackages = "org.sejongisc.backend", entityManagerFactoryRef = "primaryEntityManagerFactory", diff --git a/backend/src/main/java/org/sejongisc/backend/common/config/StockDataSourceConfig.java b/backend/src/main/java/org/sejongisc/backend/common/config/StockDataSourceConfig.java index d617dfe4..552b4d81 100644 --- a/backend/src/main/java/org/sejongisc/backend/common/config/StockDataSourceConfig.java +++ b/backend/src/main/java/org/sejongisc/backend/common/config/StockDataSourceConfig.java @@ -7,6 +7,7 @@ import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; @@ -21,6 +22,7 @@ @Configuration @EnableTransactionManagement +@Profile("dev") @EnableJpaRepositories( basePackages = "org.sejongisc.backend.stock.repository", entityManagerFactoryRef = "stockEntityManagerFactory",