Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release] v 1.0.1 #484

Merged
merged 154 commits into from
Aug 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
154 commits
Select commit Hold shift + click to select a range
058a750
#412 [fix] Presigned url 만료 시간 재설정
sohyundoh Jun 28, 2024
eff31cc
#412 [fix] duplicate interceptor 토큰 인증 제외
sohyundoh Jun 28, 2024
d2cf56f
#400 [refactor] random writername Service 제거
sohyundoh Jun 30, 2024
8714774
#400 [refactor] moim Service 계층 분리
sohyundoh Jun 30, 2024
c6b2c70
#400 [refactor] writerName 서비스 계층 계층 분리
sohyundoh Jun 30, 2024
6ae4e8d
#400 [refactor] 파급 서비스 계층 분리 및 정리
sohyundoh Jun 30, 2024
fd050ab
#398 [refactor] CommentReply 서비스 분리
parkheeddong Jul 1, 2024
df7b6c0
#400 [refactor] Moim & WriterName 계층 분리
sohyundoh Jul 1, 2024
383d43a
#398 [refactor] Comment 서비스 분리
parkheeddong Jul 2, 2024
013d0cd
#398 [fix] conflict 해결
parkheeddong Jul 2, 2024
7236fd8
#418 [refactor] post 서비스 계층 분리
sohyundoh Jul 2, 2024
c5bfdb9
#418 [refactor] post 서비스 계층 분리
sohyundoh Jul 2, 2024
b477cc3
#418 [refactor] 미사용 import문 삭제
sohyundoh Jul 2, 2024
20516d1
#418 [refactor] deleteRelatedData 리팩토링
sohyundoh Jul 2, 2024
9019d9b
Merge pull request #419 from Mile-Writings/refactor/#398
parkheeddong Jul 2, 2024
627773f
#418 [refactor] post 서비스 계층 분리
sohyundoh Jul 2, 2024
cc735c7
#421 [refactor] Curious 서비스 분리
parkheeddong Jul 2, 2024
ad109b5
Merge pull request #422 from Mile-Writings/refactor/#421
parkheeddong Jul 2, 2024
1cfd43e
#424 [test] 글모임 - 테스트 코드 작성
sohyundoh Jul 7, 2024
cc4118f
#424 [fix] 글모임 등록 설명 길이 수정
sohyundoh Jul 7, 2024
2989199
#424 [test] 동시성 테스트 유저 인증 방식 변경
sohyundoh Jul 7, 2024
0f82840
#424 [refactor] 메서드명 변경
sohyundoh Jul 7, 2024
2afb172
#424 [test] 글모임 도메인 컨트롤러 단위테스트 코드 작성
sohyundoh Jul 7, 2024
761a080
#426 [refactor] 사용자 글모임 list 조회 N+1 해결
sohyundoh Jul 9, 2024
926bb84
#426 [fix] 주석 해제
sohyundoh Jul 9, 2024
4c989d4
#428 [feat] 유저 로그인 관련 엔드포인트 수정
sohyundoh Jul 14, 2024
f40215f
#428 [feat] 유저 탈퇴시 플로우 임시 구현(관련 정보 전체 삭제)
sohyundoh Jul 14, 2024
070b4f1
#428 [feat] 유저 탈퇴시 소셜 서비스와 연결 해제 기능 구현
sohyundoh Jul 14, 2024
ac4b648
#430 [docs] 리드미 수정
sohyundoh Jul 19, 2024
a938bdc
#430 [docs] 리드미 수정
sohyundoh Jul 21, 2024
5be334c
#426 [refactor] 사용자 글모임 list 조회 N+1 해결
sohyundoh Jul 24, 2024
11568a1
#428 [feat] 유저 탈퇴 플로우 수정 및 구현
sohyundoh Jul 24, 2024
8a26d6d
Merge branch 'refactor/#426' into feat/#428
sohyundoh Jul 24, 2024
7b2b1ea
#428 [feat] import 문 작성
sohyundoh Jul 24, 2024
9bc73ef
#428 [refactor] 코드 스타일 변경
sohyundoh Jul 24, 2024
4afb51f
#428 [feat] 탈퇴 플로우 재 작성
sohyundoh Jul 24, 2024
85393e2
#434 [feat] 권한 조회 변경
parkheeddong Jul 24, 2024
20bc967
#434 [chore] 주석제거
parkheeddong Jul 24, 2024
fb8c20f
#436 [feat] RequestContextUtil에 Jwt 검증 코드 추가
sohyundoh Jul 25, 2024
3c31d1e
#436 [feat] Context Util 에 JWT 검증 로직 추가
sohyundoh Jul 25, 2024
01c8132
#434 [refactor] 코드리뷰 반영
parkheeddong Jul 28, 2024
4ce2db9
#436 [feat] Context Util에 토큰 검증 로직 추가
sohyundoh Jul 28, 2024
cbdb63a
Merge pull request #435 from Mile-Writings/feat/#434
parkheeddong Jul 28, 2024
314609f
#438 [feat] 미사용 클래스 제거
sohyundoh Jul 30, 2024
3ed9edc
#438 [feat] 미사용 클래스( Repository ) 삭제
sohyundoh Jul 30, 2024
15d3367
#438 [feat] Jsoup 의존성 업그레이드
sohyundoh Jul 30, 2024
000a878
#438 [fix] 오타 수정
sohyundoh Jul 30, 2024
29d6733
#438 [feat] 날짜 포맷 변경
sohyundoh Jul 30, 2024
89ea566
#441 [chore] 이름 변경
parkheeddong Jul 30, 2024
2fef068
#441 [chore] Swagger API Summary 이름 변경
parkheeddong Jul 30, 2024
0989ef8
#438 [feat] 날짜 포맷 16:1 -> 16:01 로 변경
sohyundoh Jul 30, 2024
40e1804
#443 [feat] 필명 관련 데이터 삭제 플로우 추가
sohyundoh Jul 31, 2024
196aab2
#443 [feat] 필명 관련 데이터 삭제 플로우 추가
sohyundoh Jul 31, 2024
d91025b
#443 [feat] clearAutomatically 추가
sohyundoh Aug 1, 2024
4b04ec9
#443 [feat] clearAutomatically 추가
sohyundoh Aug 1, 2024
0ffc2b1
#443 [feat] JPQL Query Transactional 적용
sohyundoh Aug 1, 2024
fb3642d
#443 [feat] JPQL Query Transactional 적용
sohyundoh Aug 1, 2024
bb8e7d1
#447 [refactor] token 변수 final 화
sohyundoh Aug 5, 2024
21dbef8
#447 [feat] Comment 관련 swagger 버그 해결
sohyundoh Aug 5, 2024
2f00390
#447 [refactor] facade 패턴 분리
sohyundoh Aug 5, 2024
9bf1165
#447 [feat] 예외 처리 세분화
sohyundoh Aug 5, 2024
1ecee57
#447 [feat] 댓글, 대댓글 삭제/수정 권한 여부 편집
sohyundoh Aug 5, 2024
9b1824b
#447 [refactor] 글모임 유효성 체크 리팩토링
sohyundoh Aug 5, 2024
5b02e3a
#447 [feat] 도메인 관련 제약사항 수정
sohyundoh Aug 5, 2024
80c6ab2
#447 [feat] 객체 검색 방식 리팩토링
sohyundoh Aug 5, 2024
dc4dd41
#447 [feat] 글 삭제 관련 권한 요구사항 반영
sohyundoh Aug 5, 2024
e94f234
#448 [feat] comment 개수 return 방식 변경
sohyundoh Aug 5, 2024
1200419
#448 [feat] 글감 리스트 리턴 idUrl -> id 변경
sohyundoh Aug 5, 2024
f2822e8
#448 [feat] 모임 이름 validation 방식 변경
sohyundoh Aug 5, 2024
b8ac32c
#448 [feat] 에러 코드 세분화 작업
sohyundoh Aug 5, 2024
2466925
#448 [feat] Jsoup 활용 방식 변경
sohyundoh Aug 5, 2024
d44ccdd
#448 [test] Jsoup 기대값 테스트
sohyundoh Aug 5, 2024
a12934b
#447 [fix] 에러 코드 수정
sohyundoh Aug 6, 2024
d37e6b0
#448 [feat] 필드 값 수정
sohyundoh Aug 6, 2024
d6d53ed
#447 [feat] 글 상세 뷰 에러 코드 세분화
sohyundoh Aug 6, 2024
2e765bc
#448 [feat] topicId 전달 방식 롤백
sohyundoh Aug 6, 2024
0cbe94d
#448 [fix] 중복 체크 방식 변경
sohyundoh Aug 6, 2024
e33a3ae
Merge branch 'develop' into feat/#448
sohyundoh Aug 6, 2024
93fa7eb
#448 [feat] 글모임 뷰 에러코드 상세화
sohyundoh Aug 6, 2024
3a93609
#452 [feat] 관리자 페이지 멤버 관리 에러 코드 세분화
sohyundoh Aug 6, 2024
d13dfe8
#453 [feat] 글모임 정보 수정 플로우 수정
sohyundoh Aug 6, 2024
f58af99
#452 [fix] jpql transactional 처리
sohyundoh Aug 6, 2024
752015b
#452 [refactor] Topic Remover 클래스 리팩토링
sohyundoh Aug 6, 2024
9928274
#454 [feat] 글 작성 페이지 에러코드 세분화
sohyundoh Aug 6, 2024
339c573
#454 [refactor] 미사용 함수 제거 및 리팩토링
sohyundoh Aug 6, 2024
8e4e4c9
#456 [feat] 로그인 화면 에러 코드 세분화 및 리팩토링
sohyundoh Aug 6, 2024
8c0101d
#452 [refactor] 미사용 메서드 삭제
sohyundoh Aug 6, 2024
6b12d30
#452 [test] 글모임 삭제 플로우 인수 테스트 작성
sohyundoh Aug 6, 2024
63b475e
#452 [feat] 관리자 페이지 멤버 관리 에러 코드 세분화
sohyundoh Aug 6, 2024
424e7bd
#454 [feat] 글 작성 페이지 에러 코드 세분화
sohyundoh Aug 6, 2024
aefd4ab
#456 [feat] 로그인 화면 에러 코드 세분화 및 리팩토링
sohyundoh Aug 6, 2024
628038e
#451 [feat] 메인페이지 에러코드 세분화
parkheeddong Aug 6, 2024
8662530
#451 [feat] 관리자페이지 글감 에러코드 세분화
parkheeddong Aug 6, 2024
f244216
#451 [feat] 필명 유니크 제약조건 수정
parkheeddong Aug 6, 2024
f1d435f
#451 [fix] conflict 해결
parkheeddong Aug 6, 2024
4db7241
#459 [feat] 글모임 생성뷰 에러코드세분화
parkheeddong Aug 7, 2024
672b2f4
#451 [feat] 글모임 필명중복 체크
parkheeddong Aug 7, 2024
903fa22
Merge pull request #458 from Mile-Writings/feat/#451
parkheeddong Aug 8, 2024
e7e65a9
#459 [fix] conflict 해결
parkheeddong Aug 8, 2024
8cfdbae
Merge pull request #460 from Mile-Writings/feat/#459
parkheeddong Aug 8, 2024
d7b26a0
#461 [test] 테스트 코드 수정
sohyundoh Aug 8, 2024
e9f07ed
#461 [test] 테스트 CI 환경 구축
sohyundoh Aug 8, 2024
126abb2
#461 [test] 테스트 CI 환경 구축
sohyundoh Aug 8, 2024
4cd9103
#461 [chore] ci 플로우 수정
sohyundoh Aug 8, 2024
c8cc3b5
#461 [chore] ci 플로우 수정
sohyundoh Aug 8, 2024
ea3171c
#461 [chore] ci 플로우 수정
sohyundoh Aug 8, 2024
57cf2b5
#461 [chore] typo 수정
sohyundoh Aug 9, 2024
3a5b9fb
#461 [test] Duplicated Interceptor 테스트 수정
sohyundoh Aug 9, 2024
687154c
#461 [chore] ci 워크 플로우 수정
sohyundoh Aug 9, 2024
25b7f22
#461 [chore] ci 워크 플로우 파일 수정
sohyundoh Aug 9, 2024
a26b410
#461 [chore] ci 워크 플로우 수정
sohyundoh Aug 9, 2024
537f61f
#461 [chore] ci 워크 플로우 수정
sohyundoh Aug 9, 2024
74171d9
#461 [chore] ci 워크 플로우 수정
sohyundoh Aug 9, 2024
ab75600
#461 [chore] CI 워크 플로우 수정
sohyundoh Aug 9, 2024
6b38c1d
#461 [test] build gradle 수정
sohyundoh Aug 9, 2024
930bd49
#461 [chore] fix CI check mysql
sohyundoh Aug 9, 2024
ea2a302
#461 [chore] add Mysql user, password
sohyundoh Aug 9, 2024
de318fb
#461 [chore] change mysql image
sohyundoh Aug 9, 2024
3f3d354
#461 [test] moim controller test fix
sohyundoh Aug 9, 2024
13b783f
#461 [chore] annotate test
sohyundoh Aug 9, 2024
d3c5cc3
#461 [fix] add transaction to test method
sohyundoh Aug 9, 2024
6eabbf3
#461 [fix] test order change
sohyundoh Aug 9, 2024
55dadb7
#461 [test] 테스트 모임 제목 길이 수정
sohyundoh Aug 9, 2024
8488164
#461 [test] visualize ci test result
sohyundoh Aug 9, 2024
9283744
#461 [chore] ci permission fix
sohyundoh Aug 9, 2024
1f44ba5
#461 [chore] modify visualize tool
sohyundoh Aug 9, 2024
80c3ab7
#461 [chore] modify ci permission
sohyundoh Aug 9, 2024
f902b07
#461 [chore] modify build flow
sohyundoh Aug 9, 2024
f0ae980
#461 [test] 테스트 이상 현상 프린트
sohyundoh Aug 9, 2024
b178a9c
#461 [fix] writerName Count 쿼리 변경
sohyundoh Aug 9, 2024
469386c
#461 [fix] comment reply length fix
sohyundoh Aug 9, 2024
84177e1
#461 [fix] rollback CI workflow
sohyundoh Aug 9, 2024
ee3d70d
#461 [test] CI 테스트 환경 구축
sohyundoh Aug 11, 2024
5381a52
#464 [feat] 필명 리스트 오름차순 정렬
parkheeddong Aug 11, 2024
7126e44
#464 [feat] 모임장이 먼저 오도록 쿼리문 변경
parkheeddong Aug 11, 2024
ab282a1
#467 [feat] 토큰 관련 수정 사항 반영
sohyundoh Aug 13, 2024
a899e4b
#467 [feat] 토큰 관련 수정 사항 반영
sohyundoh Aug 13, 2024
e217e5a
#469 [feat] CORS 허용 범위 수정
sohyundoh Aug 13, 2024
437c3b0
#469 [feat] CORS 허용 범위 수정
sohyundoh Aug 13, 2024
c36d6ba
#471 [feat] 에러 메세지 추가
sohyundoh Aug 13, 2024
91fcdd8
#471 [feat] RefreshToken 인증 방식 변경
sohyundoh Aug 13, 2024
c9f70aa
#471 [feat] Refresh Token 이용 방식 수정
sohyundoh Aug 13, 2024
de3cdce
Merge pull request #465 from Mile-Writings/feat/#464
parkheeddong Aug 13, 2024
b5b122c
#466 [fix] 글 수정 시 사진 포함 여부 변경 update
sohyundoh Aug 14, 2024
f5cd71a
#466 [feat] 액세스 토큰 만료 시간 재설정
sohyundoh Aug 14, 2024
9d03c6c
#466 [fix] 글 수정 시 사진 포함 여부 변경 update
sohyundoh Aug 14, 2024
6f3e3a6
#475 [fix] webConfig origin 추가
sohyundoh Aug 14, 2024
c25be71
#475 [fix] webConfig origin 추가
sohyundoh Aug 14, 2024
31e8156
#477 [fix] 리프레시 토큰 발급 시 Auth 헤더 추출 X
sohyundoh Aug 14, 2024
96358a3
#477 [feat] 리프레시 로직 토큰 추출 X
sohyundoh Aug 14, 2024
15cc35b
#477 [feat] 액세스 토큰 만료 시간 연장 및 cookie 속성 변경
sohyundoh Aug 14, 2024
4d10ed1
#477 [feat] 액세스 토큰 만료 시간 연장 및 cookie 속성 변경
sohyundoh Aug 14, 2024
3a59c16
#482 [fix] 리스폰스 에러 코드 분기처리
sohyundoh Aug 15, 2024
a6bc4bc
#482 [fix] 리스폰스 에러 코드 분기처리
sohyundoh Aug 15, 2024
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
37 changes: 31 additions & 6 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,40 @@ on:
pull_request:
branches: [ "develop" ]

permissions:
checks: write
pull-requests: write

jobs:
build:
runs-on: ubuntu-22.04

runs-on: ubuntu-22.04

steps:
- name: checkout
uses: actions/checkout@v3

- name: Setup MySQL
uses: samin/mysql-action@v1
with:
host port: 3306
container port: 3306
mysql root user: 'mile'
mysql root password: 'mile'
mysql user: 'mile'
mysql password: 'mile'

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'

- name : Setup Redis
uses: shogo82148/actions-setup-redis@v1
with:
redis-version: "7.x"
run: redis-cli ping

- name: create application.yml
run: |
## create application.yml
Expand All @@ -33,9 +52,15 @@ jobs:
# application.yml 파일 확인
cat ./application.yml
shell: bash

- name: build

- name: Wait for MySQL
run: |
while ! mysqladmin ping --host=127.0.0.1 --password='mile' --silent; do
sleep 1
done

- name: Build
run: |
chmod +x gradlew
./gradlew build -x test
shell: bash
./gradlew clean build
shell: bash
95 changes: 19 additions & 76 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,110 +1,53 @@
## 📖 MILE (Make It Look Easy)
<img width="1920" alt="마일" src="https://github.com/user-attachments/assets/4dd983b9-5018-494d-a5ea-a6d4f6533bdb">

> 오직, 글모임을 위한 글쓰기 플랫폼


<br/>



## 💗 Our Team
|도소현|박희정|
|:------:|:------:|
|<img src="https://github.com/Mile-Writings/Mile-Server/assets/79795051/5cfa86cb-c618-4903-a89d-87eca2f26c77" width="300" height="450" />|<img src="https://github.com/Mile-Writings/Mile-Server/assets/79795051/c1a5e201-cf6a-4aab-83d1-2afb1dbeeb33" width="300" height="450" />|
|[@sohyundoh](https://github.com/sohyundoh)|[@parkheeddong](https://github.com/parkheeddong)|


<br/>

## 🌳 Branch Convention
<details>
<summary> GIT - FLOW 전략 </summary>
<div markdown="1">
<img src="https://github.com/Mile-Writings/Mile-Server/assets/116873401/5c3f34cb-5ab1-4a16-ad44-712a39108985" width = "600"/>
</div>
</details>

- `main` : 프로덕션용 브랜치 (배포 시 사용될 버전만 존재)
- `develop` : 개발 전용 브랜치
- `이슈 기반 브랜치`
- 생성된 이슈 번호로 브랜치를 생성한다
- feat/#{이슈번호}
- ex. feat/#1,
- ex. hotfix/#3
- PR이 Merge되면 해당 브랜치는 삭제한다.



<br />


## 📌 Commit Convention
**이슈번호 [tag] 커밋 내용 요약**

ex. #123 [feat] 로그인 구현

| tag | description |
| --- | --- |
| feat | 새로운 기능 추가 |
| fix | 자잘한 수정 |
| bugfix | 버그 수정 |
| refactor | 코드 리팩토링 시에만 사용 |
| chore | config 및 라이브러리, 빌드 관련 파일 수정 (프로덕션 코드 수정 x) |
| rename | 파일명, 변수명 수정 |
| docs | 문서 수정 |
| comment | 주석 추가 및 수정 |
| remove | 기능 삭제 및 파일 삭제 |
| test | 테스트 코드 작성 |
| hotfix | hotfix |

<br />


## 📍 Architecture
![image](https://github.com/Mile-Writings/Mile-Server/assets/79795051/3fadfcd5-ae4b-420a-bc5b-313aca7b5b11)

## 🤍 ERD
<img width="718" alt="image" src="https://github.com/Mile-Writings/Mile-Server/assets/79795051/ce6b8805-0547-46f0-a571-563165ddd372">

## 👨🏻‍💻 Stack
| Stack | Version | Content |
| --- | --- | --- |
| Spring Boot | 3.2.1 | - |
| JDK | 17 | - |
| MySql | 8.0.33 | - |
| Openfeign - Spring Cloud | 2022.0.4 | 소셜 로그인 연동 |
| Redis | 2.3.1 | 리프레시 토큰 저장 |
| QueryDsl | 5.0.0 | 동적 쿼리 생성 |

<br />

## 🗂️ Directory
```jsx
├── build.gradle
├── 🗂️ module-api
├── 🗂️ module-api # 프레젠테이션
│   ├── build.gradle
│   └── 📂 src/main/java/com/mile
│   ├── 📂 common
│   ├── 📂 config
│   └── 📂 post # 도메인 별로 controller 분리
│   └── 📂 src
│   ├──main/java/com/mile
│   ├── 📂 common
│   ├── 📂 config
│   └── 📂 controller
│   └── test/java/com/mile
├── 🗂️ module-auth
│   ├── build.gradle
│   └── 📂 src/main/java/com/mile
│   └── 📂 external
│   └── 📂 client
│   ├── 📂 client
│   ├── 📂 jwt # 레디스 리프레시 토큰 저장용
│   └── 📂 strategy # 로그인 전략패턴
├── 🗂️ module-common
│   ├── build.gradle
│   └── 📂 src/main/java/com/mile
│   └── 📂 exception
│   ├── 📂 message
│   └── 📂 model
│   └── 📂 util
│   ├── 📂 exception
│   ├── 📂 dto
│   ├── 📂 handler
│   ├── 📂 log
│   └── 📂 swagger
├── 🗂️ module-domain
│   ├── build.gradle
│   └── 📂 src/main/java/com/mile
│   └── 📂 post #도메인 별로 분리
│   ├── 📂 domain
│   ├── 📂 repository
│   └── 📂 service
└── settings.gradle
│   └── 📂 post # 도메인 별로 분리
└── 🗂️ module-external # AWS S3
```

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public class JwtTokenProvider {

private static final String MEMBER_ID = "memberId";
private static final Long ACCESS_TOKEN_EXPIRATION_TIME = 24 * 60 * 60 * 1000L * 14;
private static final Long ACCESS_TOKEN_EXPIRATION_TIME = 4 * 60 * 60 * 1000L;
private static final Long REFRESH_TOKEN_EXPIRATION_TIME = 60 * 60 * 24 * 1000L * 14;

@Value("${jwt.secret}")
Expand All @@ -37,7 +37,7 @@ protected void init() {
}

private String getTokenFromHeader(final String token) {
if (!StringUtils.hasText(token)) {
if (!StringUtils.hasText(token) || token.equals("Bearer null") || token.equals("Bearer ")) {
throw new UnauthorizedException(ErrorMessage.UN_LOGIN_EXCEPTION);
} else if (StringUtils.hasText(token) && !token.startsWith("Bearer ")) {
throw new BadRequestException(ErrorMessage.BEARER_LOST_ERROR);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.mile.common.utils;

import com.mile.common.auth.JwtTokenProvider;
import com.mile.common.auth.JwtValidationType;
import com.mile.exception.message.ErrorMessage;
import com.mile.exception.model.UnauthorizedException;
import jakarta.servlet.http.HttpServletRequest;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
Expand All @@ -19,11 +22,17 @@ public class ContextHolderUtil {

public String getUserIdFromContextHolder() {
HttpServletRequest servletRequest = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();

if (HttpMethod.OPTIONS.matches(servletRequest.getMethod())) {
return null;
}
return jwtTokenProvider.getUserFromJwt(servletRequest.getHeader("Authorization")).toString();

final String token = servletRequest.getHeader("Authorization");

if(!jwtTokenProvider.validateToken(token).equals(JwtValidationType.VALID_JWT)) {
throw new UnauthorizedException(ErrorMessage.TOKEN_VALIDATION_ERROR);
}

return jwtTokenProvider.getUserFromJwt(token).toString();
}

}
22 changes: 21 additions & 1 deletion module-api/src/main/java/com/mile/config/WebConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.mile.common.resolver.topic.TopicVariableResolver;
import com.mile.common.resolver.user.UserIdHeaderResolver;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
Expand All @@ -28,11 +29,30 @@ public class WebConfig implements WebMvcConfigurer {
private final DuplicatedInterceptor duplicatedInterceptor;
private final UserIdHeaderResolver userIdHeaderResolver;

@Value("${client.local}")
private String clientLocal;

@Value("${client.deploy}")
private String clientDeploy;

@Value("${backend.local-set1}")
private String serverLocalSet1;

@Value("${backend.local-set2}")
private String serverLocalSet2;

@Value("${backend.develop}")
private String serverDevelop;

@Value("${backend.deploy}")
private String serverDeploy;

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedOrigins(clientLocal, clientDeploy, serverLocalSet1, serverLocalSet2, serverDevelop, serverDeploy)
.allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH", "OPTIONS")
.allowCredentials(true)
.maxAge(3000);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import com.mile.common.resolver.user.UserId;
import com.mile.dto.SuccessResponse;
import com.mile.exception.message.SuccessMessage;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -20,7 +20,6 @@
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
@RequestMapping("/api/comment")
@RequiredArgsConstructor
public class CommentController implements CommentControllerSwagger {
Expand All @@ -41,13 +40,14 @@ public ResponseEntity<SuccessResponse> deleteComment(
public ResponseEntity<SuccessResponse> createCommentReply(
@CommentIdPathVariable final Long commentId,
@UserId final Long userId,
@RequestBody final ReplyCreateRequest createRequest,
@Valid @RequestBody final ReplyCreateRequest createRequest,
@PathVariable("commentId") final String commentUrl
) {
return ResponseEntity.status(HttpStatus.CREATED).header("Location",
commentService.createCommentReply(
userId,
commentId, createRequest
commentId,
createRequest
)).body(SuccessResponse.of(SuccessMessage.REPLY_CREATE_SUCCESS));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;

@Tag(name = "Comment", description = "댓글 관련 API")
@SecurityRequirement(name = "JWT Auth")
public interface CommentControllerSwagger {

@Operation(description = "댓글 삭제 API")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.mile.post.service.dto.CommentCreateRequest;
import com.mile.post.service.dto.CommentListResponse;
import com.mile.post.service.dto.ModifyPostGetResponse;
import com.mile.post.service.dto.PostAuthenticateResponse;
import com.mile.post.service.dto.PostCreateRequest;
import com.mile.post.service.dto.PostCuriousResponse;
import com.mile.post.service.dto.PostGetResponse;
Expand Down Expand Up @@ -96,7 +97,7 @@ public SuccessResponse<PostCuriousResponse> deleteCurious(

@GetMapping("/{postId}/authenticate")
@Override
public ResponseEntity<SuccessResponse> getAuthenticateWrite(
public ResponseEntity<SuccessResponse<PostAuthenticateResponse>> getAuthenticateWrite(
@PostIdPathVariable final Long postId,
@UserId final Long userId,
@PathVariable("postId") final String postUrl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.mile.post.service.dto.CommentCreateRequest;
import com.mile.post.service.dto.CommentListResponse;
import com.mile.post.service.dto.ModifyPostGetResponse;
import com.mile.post.service.dto.PostAuthenticateResponse;
import com.mile.post.service.dto.PostCreateRequest;
import com.mile.post.service.dto.PostCuriousResponse;
import com.mile.post.service.dto.PostGetResponse;
Expand Down Expand Up @@ -121,7 +122,7 @@ SuccessResponse<PostCuriousResponse> deleteCurious(
);


@Operation(summary = "게시글 삭제/수정 권한 확인")
@Operation(summary = "게시글 권한 확인")
@ApiResponses(
value = {
@ApiResponse(responseCode = "200", description = "게시글 권한이 확인되었습니다."),
Expand All @@ -134,7 +135,7 @@ SuccessResponse<PostCuriousResponse> deleteCurious(

}
)
ResponseEntity<SuccessResponse> getAuthenticateWrite(
ResponseEntity<SuccessResponse<PostAuthenticateResponse>> getAuthenticateWrite(
@Parameter(schema = @Schema(implementation = String.class), in = ParameterIn.PATH) final Long postId,
@Parameter(schema = @Schema(implementation = String.class), in = ParameterIn.PATH) @UserId final Long userId,
@PathVariable("postId") final String postUrl
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ public class TopicController implements TopicControllerSwagger {
@GetMapping("/{topicId}")
public SuccessResponse<PostListInTopicResponse> getPostListByTopic(
@TopicIdPathVariable Long topicId,
@PathVariable("topicId") final String topicUrl,
@RequestParam(required = false) final String lastPostId
@RequestParam(required = false) final String lastPostId,
@PathVariable("topicId") final String topicUrl
) {
return SuccessResponse.of(SuccessMessage.MOIM_POST_GET_SUCCESS, topicService.getPostListByTopic(topicId, lastPostId));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ public interface TopicControllerSwagger {
)
SuccessResponse<PostListInTopicResponse> getPostListByTopic(
@Parameter(schema = @Schema(implementation = String.class), in = ParameterIn.PATH) final Long topicId,
@PathVariable("topicId") final String topicUrl,
@RequestParam(required = false) final String lastPostId
@RequestParam(required = false) final String lastPostId,
@PathVariable("topicId") final String topicUrl
);

@Operation(summary = "관리자 페이지 - 글감 상세 정보")
Expand Down
Loading
Loading