Commit 3b5dce2
authored
Feature/53 volunteer signin signout 기능(#62)
* refactor(package): 패키지 이동
* style(ApiResponse): 불필요한 개행 제거
* feat(application.yml): front, back root url 추가
* refactor(package): 패키지 이동
* feat(cookie): 쿠키 삭제(덮어씌우기), 토큰 타입 추가(SIGNOUT), 파일명 변경
* feat(RefreshToken): 리프레시 토큰 삭제 수정
- 리프레시 토큰 삭제의 파라미터를 엑세스 토큰에서 사용자 ID로 변경
- 리프레시 토큰이 존재하지 않아도 로그아웃이 가능하도록 로직 수정
- 리프레시 토큰이 없는 상태에서 로그아웃이 불가능한 것은 비정상적인 동작으로 판단
- 레포지토리에서 사용자 ID로 리프레시 토큰을 찾는 메서드 추가
* feat(SignOut): 로그아웃 로직 구현 및 리프레시 토큰 삭제 처리
- 로그아웃 시 액세스 토큰 쿠키를 삭제(덮어씌우기)하는 로직 추가
- 리프레시 토큰을 사용자 ID를 기반으로 삭제하도록 처리
* test(CookieService): 액세스 토큰 설정 및 삭제 로직 테스트 추가
- 액세스 토큰 설정 동작 검증
- 토큰 값, HttpOnly, Secure, Path 등 쿠키 속성 확인
- 액세스 토큰 삭제 동작 검증
- 쿠키 값에 SIGNOUT이 포함된 것을 확인
- 쿠키 값이 삭제(Max-Age=0)되었는지 확인
* feat(OAuth): OAuth URL 생성 서비스 구현
- OAuth 인증 URL을 동적으로 생성
- 백엔드 Root URL과 OAuth Provider 이름을 조합하여 URL 생성
- /oauth2/authorization/{provider} 형태의 URL 반환 로직 구현
- 환경에 따라 백엔드 Root URL을 설정할 수 있도록 @value("${app.back-url}") 적용
* test(GenerateOAuthUrlService): OAuth URL 생성 로직 테스트 추가
- OAuth Provider에 따라 올바른 URL이 생성되는지 검증
* test(SignOutVolunteerService): 로그아웃 동작 테스트 추가
- 테스트 후 레디스 delete all
- 액세스 토큰 쿠키 삭제 및 리프레시 토큰 제거 검증
- 리프레시 토큰이 없는 경우에도 예외가 발생하지 않는지 확인
- 테스트 시 MockHttpServletResponse를 활용하여 쿠키 동작 검증
- 쿠키 name이 중복으로 저장되는 문제 회피 (트러블슈팅 기록)
* feat(application.yml): front/back url 변수 처리
* feat(VolunteerSignController): OAuth 로그인 및 로그아웃 API 추가
- OAuth 로그인 URL 생성 API 추가
- [POST] /api/volunteer/sign-in/oauth/{oauthProvider}
- 지원되는 OAuth 제공자에 따라 리다이렉트 URL 생성 및 반환
- 지원되지 않는 OAuth 제공자는 `BadRequestException` 처리
- 로그아웃 API 추가
- [POST] /api/volunteer/sign-out
- 액세스 토큰 쿠키 삭제 및 리프레시 토큰 제거
- 성공 시 표준 응답 형식(`ApiResponse.ok`)으로 메시지 반환
- GenerateOAuthUrlUseCase를 사용해 OAuth URL 동적 생성
- SignOutVolunteerUseCase를 사용해 로그아웃 로직 처리
* feat(application.yml): naver-redirect-uri 변수 처리
* CICD/ 환경 변수 추가 (#61)
* cicd: 환경변수 추가
- OAuth 연동을 위한 환경변수 추가
* refactor(package): C/Q 구분 삭제
* feat(application.yml): UTF-8, KR 설정
* test(VolunteerSignController): OAuth 로그인 및 로그아웃 통합 테스트 추가
- 유효한 OAuth 제공자로 로그인 URL 생성 테스트 추가
- 지원되지 않는 OAuth 제공자에 대해 400 에러 반환 테스트 추가
- 로그아웃 요청 시 성공 메시지 반환 테스트 추가
* test(@transactional): 불필요한 트랜잭션 어노테이션 삭제
* refactor: 불필요한 어노테이션 삭제
* refactor(package): 패키지 이동
* style(ApiResponse): 불필요한 개행 제거
* feat(application.yml): front, back root url 추가
* refactor(package): 패키지 이동
* feat(cookie): 쿠키 삭제(덮어씌우기), 토큰 타입 추가(SIGNOUT), 파일명 변경
* feat(RefreshToken): 리프레시 토큰 삭제 수정
- 리프레시 토큰 삭제의 파라미터를 엑세스 토큰에서 사용자 ID로 변경
- 리프레시 토큰이 존재하지 않아도 로그아웃이 가능하도록 로직 수정
- 리프레시 토큰이 없는 상태에서 로그아웃이 불가능한 것은 비정상적인 동작으로 판단
- 레포지토리에서 사용자 ID로 리프레시 토큰을 찾는 메서드 추가
* feat(SignOut): 로그아웃 로직 구현 및 리프레시 토큰 삭제 처리
- 로그아웃 시 액세스 토큰 쿠키를 삭제(덮어씌우기)하는 로직 추가
- 리프레시 토큰을 사용자 ID를 기반으로 삭제하도록 처리
* test(CookieService): 액세스 토큰 설정 및 삭제 로직 테스트 추가
- 액세스 토큰 설정 동작 검증
- 토큰 값, HttpOnly, Secure, Path 등 쿠키 속성 확인
- 액세스 토큰 삭제 동작 검증
- 쿠키 값에 SIGNOUT이 포함된 것을 확인
- 쿠키 값이 삭제(Max-Age=0)되었는지 확인
* feat(OAuth): OAuth URL 생성 서비스 구현
- OAuth 인증 URL을 동적으로 생성
- 백엔드 Root URL과 OAuth Provider 이름을 조합하여 URL 생성
- /oauth2/authorization/{provider} 형태의 URL 반환 로직 구현
- 환경에 따라 백엔드 Root URL을 설정할 수 있도록 @value("${app.back-url}") 적용
* test(GenerateOAuthUrlService): OAuth URL 생성 로직 테스트 추가
- OAuth Provider에 따라 올바른 URL이 생성되는지 검증
* test(SignOutVolunteerService): 로그아웃 동작 테스트 추가
- 테스트 후 레디스 delete all
- 액세스 토큰 쿠키 삭제 및 리프레시 토큰 제거 검증
- 리프레시 토큰이 없는 경우에도 예외가 발생하지 않는지 확인
- 테스트 시 MockHttpServletResponse를 활용하여 쿠키 동작 검증
- 쿠키 name이 중복으로 저장되는 문제 회피 (트러블슈팅 기록)
* feat(application.yml): front/back url 변수 처리
* feat(VolunteerSignController): OAuth 로그인 및 로그아웃 API 추가
- OAuth 로그인 URL 생성 API 추가
- [POST] /api/volunteer/sign-in/oauth/{oauthProvider}
- 지원되는 OAuth 제공자에 따라 리다이렉트 URL 생성 및 반환
- 지원되지 않는 OAuth 제공자는 `BadRequestException` 처리
- 로그아웃 API 추가
- [POST] /api/volunteer/sign-out
- 액세스 토큰 쿠키 삭제 및 리프레시 토큰 제거
- 성공 시 표준 응답 형식(`ApiResponse.ok`)으로 메시지 반환
- GenerateOAuthUrlUseCase를 사용해 OAuth URL 동적 생성
- SignOutVolunteerUseCase를 사용해 로그아웃 로직 처리
* feat(application.yml): naver-redirect-uri 변수 처리
* refactor(package): C/Q 구분 삭제
* feat(application.yml): UTF-8, KR 설정
* test(VolunteerSignController): OAuth 로그인 및 로그아웃 통합 테스트 추가
- 유효한 OAuth 제공자로 로그인 URL 생성 테스트 추가
- 지원되지 않는 OAuth 제공자에 대해 400 에러 반환 테스트 추가
- 로그아웃 요청 시 성공 메시지 반환 테스트 추가
* test(@transactional): 불필요한 트랜잭션 어노테이션 삭제
* refactor: 불필요한 어노테이션 삭제
* refactor: 불필요한 import 제거1 parent ab20dd4 commit 3b5dce2
File tree
35 files changed
+490
-82
lines changed- src
- main
- java/com/somemore
- auth
- cookie
- jwt
- domain
- filter
- refresh
- manager
- repository
- service
- usecase
- oauth
- handler/success
- community/service
- global/common/response
- volunteer
- controller
- service
- usecase
- resources
- test
- java/com/somemore
- auth
- cookie
- jwt/service
- volunteer
- controller
- service
- resources
35 files changed
+490
-82
lines changedLines changed: 36 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 0 additions & 8 deletions
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| |||
Lines changed: 0 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
Lines changed: 3 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
34 | 32 | | |
35 | 33 | | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
13 | 15 | | |
0 commit comments