-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from gengminy/feat/sms
🚀 feat(sms): 문자메세지 발송 구현 #1
- Loading branch information
Showing
31 changed files
with
683 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--- | ||
name: "\U0001F680 Feature Template" | ||
about: 기능 추가에 대한 작업 사항을 적습니다 | ||
title: "\U0001F680[Feature] - " | ||
labels: '' | ||
assignees: '' | ||
|
||
--- | ||
|
||
# 🚀 Feature - <!--{ 작업 내용 }--> | ||
<!-- 위 작업내용 주석에 어떤 기능인지 적어주세요--> | ||
|
||
|
||
### 📝 Description | ||
|
||
--- | ||
<!-- 아래에 설명을 적어주세요 --> | ||
설명을 작성해주세요 | ||
|
||
|
||
### ✅ To Do List | ||
|
||
--- | ||
<!-- 아래에 어떤 작업을 해야 하는지 적어주세요 --> | ||
- [ ] 작업1 | ||
- [ ] 작업2 | ||
|
||
### 📚 Etc | ||
|
||
--- | ||
<!-- 작업 중 특이사항이 생기면 적어주세요 --> | ||
특이사항 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
--- | ||
name: "\U0001F528 Refactor Template" | ||
about: 리팩토링 관련 작업 사항을 적습니다 | ||
title: "\U0001F528 Refactor - " | ||
labels: '' | ||
assignees: '' | ||
|
||
--- | ||
|
||
# 🔨 Refactor - <!--{ 작업 내용 }--> | ||
<!-- 위 작업내용 주석에 어떤 오류인지 적어주세요--> | ||
|
||
### 📝 Description | ||
|
||
--- | ||
<!-- 어떤 리팩토링 작업을 했는지 적어주세요 --> | ||
리팩토링 작업 사항 | ||
|
||
### ✅ To Do List | ||
|
||
--- | ||
<!-- 아래에 수정 사항을 적어주세요 PR 날릴 때 모두 체크되어야함 --> | ||
- [ ] 수정1 | ||
- [ ] 수정2 | ||
|
||
### 📚 Etc | ||
|
||
--- | ||
<!-- 작업 중 특이사항이 생기면 적어주세요 --> | ||
특이사항 | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
--- | ||
name: "❌Bug Report Template" | ||
about: 버그가 발생한 상황과 수정 내역을 적습니다 | ||
title: "\U0001F41E Bug - " | ||
labels: '' | ||
assignees: '' | ||
|
||
--- | ||
|
||
# 🐞 Bug - <!--{ 작업 내용 }--> | ||
<!-- 위 작업내용 주석에 어떤 오류인지 적어주세요--> | ||
|
||
|
||
### 🕵️♀️ Condition | ||
|
||
--- | ||
<!-- 아래에 버그가 발생한 상황을 적어주세요 --> | ||
에러 발생 조건 및 대상 | ||
|
||
### 📝 Description | ||
|
||
--- | ||
<!-- 아래에 버그가 발생한 상황을 적어주세요 --> | ||
에러 발생 상황 설명 | ||
|
||
### ✅ To Do List | ||
|
||
--- | ||
<!-- 아래에 수정 사항을 적어주세요 PR 날릴 때 모두 체크되어야함 --> | ||
- [ ] 수정1 | ||
- [ ] 수정2 | ||
|
||
### 📚 Etc | ||
|
||
--- | ||
<!-- 작업 중 특이사항이 생기면 적어주세요 --> | ||
특이사항 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# 💡 PR Summary - <!--{ 작업 내용 }--> | ||
<!-- 어떤 작업에 대한 PR 인지 위 주석에 적어주세요 --> | ||
|
||
### 📝 Description | ||
|
||
--- | ||
<!-- 어떤 작업을 했는지 간단하게 적어주세요 --> | ||
작업 사항 | ||
|
||
### 🌲 Working Branch | ||
|
||
--- | ||
<!-- 예시) feature/user --> | ||
작업 브랜치 | ||
|
||
### 📖 Related Issues | ||
|
||
--- | ||
<!-- 예시) #1 --> | ||
이슈 번호 | ||
|
||
|
||
### 📚 Etc | ||
|
||
--- | ||
<!-- 작업 중 특이사항이 생기면 적어주세요 --> | ||
특이사항 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 40 additions & 0 deletions
40
src/main/java/com/tikitaka/naechinso/config/RedisConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package com.tikitaka.naechinso.config; | ||
|
||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.data.redis.connection.RedisConnectionFactory; | ||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; | ||
import org.springframework.data.redis.core.RedisTemplate; | ||
import org.springframework.data.redis.serializer.StringRedisSerializer; | ||
|
||
/** Redis 설정입니다 | ||
* @author gengminy (220812) */ | ||
@Configuration | ||
public class RedisConfig { | ||
@Value("${REDIS_HOST}") | ||
private String host; | ||
|
||
@Value("${REDIS_PORT}") | ||
private int port; | ||
|
||
@Bean | ||
public RedisConnectionFactory redisConnectionFactory() { | ||
return new LettuceConnectionFactory(host, port); | ||
} | ||
|
||
@Bean | ||
public RedisTemplate<String, String> redisTemplate() { | ||
// redisTemplate를 받아와서 set, get, delete를 사용 | ||
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>(); | ||
/** | ||
* setKeySerializer, setValueSerializer 설정 | ||
* redis-cli을 통해 직접 데이터를 조회 시 알아볼 수 없는 형태로 출력되는 것을 방지 | ||
*/ | ||
redisTemplate.setKeySerializer(new StringRedisSerializer()); | ||
redisTemplate.setValueSerializer(new StringRedisSerializer()); | ||
redisTemplate.setConnectionFactory(redisConnectionFactory()); | ||
|
||
return redisTemplate; | ||
} | ||
} |
97 changes: 97 additions & 0 deletions
97
src/main/java/com/tikitaka/naechinso/config/SecurityConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
package com.tikitaka.naechinso.config; | ||
|
||
|
||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.security.config.annotation.web.builders.HttpSecurity; | ||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; | ||
import org.springframework.security.config.http.SessionCreationPolicy; | ||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||
import org.springframework.security.web.SecurityFilterChain; | ||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | ||
import org.springframework.web.cors.CorsConfiguration; | ||
import org.springframework.web.cors.CorsConfigurationSource; | ||
import org.springframework.web.cors.CorsUtils; | ||
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; | ||
|
||
/** 인증 및 Security 관련 설정 클래스입니다 | ||
* @author gengminy (220728) */ | ||
@EnableWebSecurity | ||
@RequiredArgsConstructor | ||
@Configuration | ||
public class SecurityConfig { | ||
private static final String[] SwaggerPatterns = { | ||
"/swagger-resources/**", | ||
"/swagger-ui.html", | ||
"/v2/api-docs", | ||
"/webjars/**" | ||
}; | ||
// private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; | ||
// private final JwtAuthenticationFilter jwtAuthenticationFilter; | ||
// private final JwtAccessDeniedHandler jwtAccessDeniedHandler; | ||
|
||
|
||
@Bean | ||
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { | ||
http | ||
.cors().configurationSource(corsConfigurationSource()) | ||
.and() | ||
.csrf().disable() | ||
//예외처리 핸들러 | ||
.exceptionHandling() | ||
// .authenticationEntryPoint(jwtAuthenticationEntryPoint) | ||
// .accessDeniedHandler(jwtAccessDeniedHandler) | ||
.and() | ||
.sessionManagement() | ||
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) | ||
.and() | ||
.httpBasic().disable() | ||
//권한이 필요한 요청에 대한 설정 | ||
.authorizeRequests() | ||
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll() | ||
.antMatchers(SwaggerPatterns).permitAll() | ||
.antMatchers("/admin/**").hasAuthority("ROLE_ADMIN") | ||
.antMatchers("/user/**").authenticated() | ||
.anyRequest().permitAll() | ||
.and() | ||
.headers().frameOptions().disable(); | ||
// .and() | ||
// .oauth2Login() | ||
// .defaultSuccessUrl("/login-success") | ||
// .successHandler(oAuth2AuthenticationSuccessHandler) | ||
// .userInfoEndpoint() | ||
// .userService(customOAuth2Service); | ||
|
||
// http.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); | ||
return http.build(); | ||
// 검토 필요 | ||
} | ||
|
||
/** cors 설정 configuration bean */ | ||
@Bean | ||
public CorsConfigurationSource corsConfigurationSource() { | ||
CorsConfiguration configuration = new CorsConfiguration(); | ||
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); | ||
|
||
//로컬 react 개발 환경 | ||
configuration.addAllowedOriginPattern("*"); | ||
//서버 react 프론트 환경 | ||
configuration.addAllowedHeader("*"); | ||
configuration.addAllowedMethod("*"); | ||
configuration.addExposedHeader("x-auth-token"); | ||
//내 서버의 응답 json 을 javascript에서 처리할수 있게 하는것(axios 등) | ||
configuration.setAllowCredentials(true); | ||
configuration.setMaxAge(3600L); | ||
|
||
source.registerCorsConfiguration("/**", configuration); | ||
return source; | ||
} | ||
|
||
/** 비밀번호 암호화 bcrypt Encoder 설정 */ | ||
@Bean | ||
public BCryptPasswordEncoder passwordEncoder() { | ||
return new BCryptPasswordEncoder(); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
src/main/java/com/tikitaka/naechinso/config/WebClientConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.tikitaka.naechinso.config; | ||
|
||
import io.netty.channel.ChannelOption; | ||
import io.netty.handler.timeout.ReadTimeoutHandler; | ||
import io.netty.handler.timeout.WriteTimeoutHandler; | ||
import java.time.Duration; | ||
import java.util.concurrent.TimeUnit; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.http.HttpHeaders; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.http.client.reactive.ReactorClientHttpConnector; | ||
import org.springframework.web.reactive.function.client.WebClient; | ||
import reactor.netty.http.client.HttpClient; | ||
|
||
/** | ||
* Web Client 사용 환경을 위한 설정 파일 | ||
* */ | ||
@Configuration | ||
public class WebClientConfig { | ||
|
||
@Bean | ||
public WebClient webClient() { | ||
HttpClient httpClient = HttpClient.create() | ||
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000) | ||
.responseTimeout(Duration.ofMillis(5000)) | ||
.doOnConnected(connection -> { | ||
connection.addHandlerLast(new ReadTimeoutHandler(5000, TimeUnit.MILLISECONDS)) | ||
.addHandlerLast(new WriteTimeoutHandler(5000, TimeUnit.MILLISECONDS)); | ||
}); | ||
|
||
WebClient webClient = WebClient.builder() | ||
.defaultHeader(HttpHeaders.CONTENT_TYPE, String.valueOf(MediaType.APPLICATION_JSON)) | ||
.clientConnector(new ReactorClientHttpConnector(httpClient)) | ||
.build(); | ||
|
||
httpClient.warmup().block(); | ||
|
||
return webClient; | ||
} | ||
|
||
} |
5 changes: 5 additions & 0 deletions
5
src/main/java/com/tikitaka/naechinso/constant/DeleteStatus.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package com.tikitaka.naechinso.constant; | ||
|
||
public enum DeleteStatus { | ||
Y,N | ||
} |
Oops, something went wrong.