-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: 유저의 친구 조회 API (#27) * test: 친구 조회 통합테스트를 작성한다 * feat: 유저의 친구 조회 기능을 개발한다 * feat: application.yml profile 별 분리 및 인증 로직 기본 구현, JWT 관련 로직 구현 (#30) * feat: spring security 관련 의존성 추가 * feat: spring oauth 2.0 관련 의존성 추가 * refactor: User 엔티티 관련 리팩토링 및 관련 클래스 리팩토링 * feat: UserAuthentication (인증 객체) 구현 * feat: SecurityUtil 구현 * feat: redis 의존성 추가 * feat: profile 분리 ( 개발, 운영, 테스트, 인증, 데이터소스, 레디스 ) * feat: io-netty-dns-native-macos 관련 의존성 추가 * feat: JWT 관련 설정값 & Redis 관련 설정값 주입 구현 * feat: application-redis.yml 구현 * feat: jwt 의존성 추가 (#17) * feat: jwtAuthenticationFilter 구현 및 관련 Service 구현 (#17) * feat: 응답을 위한 TokenResponse 구현 및 기타 구현 (#17) * fix: IntegrationTest 수정 (#17) * refactor: JwtAuthenticationFilter 불필요한 주석 제거 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * fix: PropertyTest 제거 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * feat: securityConfig JwtAuthenticationFilter 적용 (#17) * fix: ci 에러 수정 (#17) * fix: ci 에러 수정 (#17) * feat: 유저 모임 참여 기능 구현 (#34) * feat: 유저가 Meeting에 참여한다. - Collection List -> Set 변경 * feat: 종료된 모임에 참여할 수 없도록 예외 추가 * test: 모임 참여에 대한 테스트 작성 - 정상적인 동작 테스트 - 종료된 모임에 대한 예외 테스트 - 최대 인원이 초과된 예외 테스트 - 이미 참여한 모임에 대한 예외 테스트 * feat: 유저 정보 가져오는 방식 수정 + 테스트 수정 * feat: 유저가 참여한 모임을 취소한다. (#35) * feat: 유저가 참여한 모임에 모임을 취소한다. * test: 모임 참여 취소에 대한 테스트를 작성한다. - 참여된 모임의 참여 취소를 성공한다. - 참여하지 않은 모임에 대한 예외 케이스 - 종료된 모임에 대한 예외 케이스 * feat: 공통 관심질문 생성 기능 개발 (#37) * test: 통합테스트를 작성한다 * feat: GPT 통신 클래스를 정의하고 통신기능을 구현한다 * feat: UserService와 Controller를 구현한다 * feat: 유저들의 공통 관심사를 기반으로 질문을 찾는 API를 개발한다 * refactor: retry 횟수를 상수로 뺀다 * feat: Sentry 연동 (#38) * feat: 인증 로직 리팩토링 및 추가 구현, 카카오,네이버 소셜 로그인 관련 설정 추가 (#39) * refactor: SecurityConfig 불필요한 변수 삭제 (#31) * refactor: jwtAuthenticationFilter 리팩토링 (#31) * feat: application-auth.yml 소셜 로그인 관련 설정 추가 (#31) * feat: application-datasource.yml 에 flyway 관련 설정 (#31) * refactor: 전반적인 코드 리팩토링 (#31) * fix: sonarCloud 코드 에러 수정 (#31) * chore: application-dev.yml ddl-auto -> validate 로 변경 (#31) * chore: jwt 라이브러리 gradle 변경 (#31) * chore: kakao,naver 사용자 정보 조회 api url 변경 (#31) * chore: naver 관련 설정 삭제 (#31) * feat: 카카오,네이버 소셜 로그인을 구현한다. (#41) * refactor: jwtService 불필요한 주석 제거 (#32) * feat: TokenResponse 레코드 형식으로 구현 (#32) * feat: OAuth 소셜 로그인 응답 객체 OAuthUserInfo 및 상속체 구현 (#32) * feat: OAuth 소셜 로그인 최종 응답 객체 OAuthUserAttributes 구현 (#32) * feat: OAuth 소셜 로그인 로직 구현 (#32) * feat: OAuth 소셜 로그인 로직 구현 (#32) * fix: sonarcloud 코드 버그 수정 (#32) * fix: sonarcloud 코드 버그 수정 (#32) * fix: sonarcloud 코드 버그 수정 (#32) * refactor: 인가 코드 콜백 URL 컨벤션 맞게 수정 (#32) * refactor: 소셜 로그인 관련 에러 수정 및 exception handler 추가 (#46) * chore: 브랜치 푸쉬 (#43) * refactor: yml 관련 리팩토링 (#43) * feat: CORS 관련 CorsConfig 구성 (#43) * feat: jwt 관련 exception handler 구성 (#43) * feat: oAuth 로그인 webClient 방식으로 변경 (#43) * refactor: 코트 컨벤션 반영 및 코드 포맷팅 * feat: test 하위 application.properties OAuth2.0 관련 임의 설정 값 추가 * refactor: 공통 관심 주제 게임 응답으로 관심 질문을 받아볼 수 있도록 추가 (#45) * build: sentry.gradle을 build.gradle에 포함시킨다 * refactor: GPT응답에서 관심주제도 받아볼 수 있도록 수정한다 * refactor: balance game type을 enum으로 변경한다 * feat: AccessToken, RefreshToken 재발급 기능을 구현한다. (#48) * refactor: jwtService 코드 리팩토링(#40) * feat: 토큰 재발행 관련 AuthController,AuthService 구현 (#40) * refactor: jwtService 코드 재정렬 (#40) * refactor: AuthService 코드 리팩토링 (#40) * refactor: 코드 형식 재정렬 (#40) * test: Jwt 재발급 통합 테스트 진행 (#40) * test: Jwt 재발급 컨트롤러 단위 테스트 진행 (#40) * test: Jwt 재발급 서비스 단위 테스트 진행 (#40) * refactor: 코드 재정렬 (#40) * fix: sonarcloud 에러 수정 (#40) * feat: 회원 탈퇴를 구현한다. (#50) * refactor: JwtService 코드 재정렬 (#40) * refactor: 불필요한 import 노출 제거 (#42) * refactor: 코드 재정렬 (#42) * feat: 회원탈퇴 API 구현 (#42) * test: 회원탈퇴 통합 테스트 구현 (#42) * refactor: SecurityConfig 코드 재정렬 (#42) * refactor: 기타 코드 리팩토링 (#42) * fix: CI 에러 수정 (#42) * feat: Redis 관련 설정 클래스를 구현하고 적용한다. (#51) * refactor: 기존 코드 리팩토링 (#49) * feat: RedisConfig 구현 (#49) * fix: CI 에러 수정 (#49) * fix: 테스트명 변경 (#49) * fix: 컨트롤러 url 컨벤션 적용 (#40) * fix: CI 임시 해결 ( test 코드 추후 다시 작성 예정 )(#40) * fix: CI 임시 해결 (#40) * fix: CI 해결 (#40) * fix: CI 해결 (#40) * refactor: 회원 탈퇴 uri 컨벤션으로 수정 (#40) * feat: 모임 생성을 구현한다. (#54) * 회원 카드 등록 API 을 구현한다. (#53) * refactor: jwtService 코드 리팩토링(#40) * feat: 토큰 재발행 관련 AuthController,AuthService 구현 (#40) * refactor: jwtService 코드 재정렬 (#40) * refactor: AuthService 코드 리팩토링 (#40) * refactor: 코드 형식 재정렬 (#40) * test: Jwt 재발급 통합 테스트 진행 (#40) * test: Jwt 재발급 컨트롤러 단위 테스트 진행 (#40) * test: Jwt 재발급 서비스 단위 테스트 진행 (#40) * refactor: JwtService 코드 재정렬 (#40) * refactor: 불필요한 import 노출 제거 (#42) * refactor: 코드 재정렬 (#42) * feat: 회원탈퇴 API 구현 (#42) * test: 회원탈퇴 통합 테스트 구현 (#42) * refactor: SecurityConfig 코드 재정렬 (#42) * refactor: 기타 코드 리팩토링 (#42) * fix: CI 에러 수정 (#42) * refactor: 기존 코드 리팩토링 (#49) * feat: RedisConfig 구현 (#49) * fix: CI 에러 수정 (#49) * feat: 회원 카드 등록 API 구현 (#47) * feat: 회원 카드 등록 API 통합 테스트 (#47) * fix: CI 에러 수정 (#47) * refactor: deleteUser 메소드 중복 제거 (#47) * feat: test 을 위한 application.p jwt 관련 설정값 추가 (#47) * test: 테스트 코드 관련 리팩토링 (#47) * test: 레디스 관련 설정 변경 (#47) * test: 회원 카드 등록 테스트 수정 및 추가 구현 (#47) * test: Property Test 구현 (#47) * fix: CI 에러 수정 (#47) * fix: SonarCloud 에러 수정 (#47) * fix: SonarCloud 에러 수정 (#47) * fix: SonarCloud 에러 수정 (#47) * fix: SonarCloud 에러 수정 (#47) * ci: cd 구성 (#55) * ci: cd를 구성한다 * fix: SENTRY_AUTH_TOKEN을 env가 아닌, property로 가져오도록 수정한다 * fix: ghcr 레포지토리 명을 수정한다 * ci: 깃헙 패키지 권한을 확인한다 * build: plain.jar가 생성되지 않도록 한다 * ci: cd를 완성한다 --------- Co-authored-by: ChoiDongKuen <[email protected]> Co-authored-by: ddingmin <[email protected]>
- Loading branch information
1 parent
246a88d
commit 5f261b0
Showing
103 changed files
with
3,285 additions
and
358 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,105 @@ | ||
name: 🎇 Deployer | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'main' | ||
|
||
jobs: | ||
build: | ||
name: build and set image | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
java-version: [ 21 ] | ||
steps: | ||
- name: checkout code | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: true | ||
|
||
- name: Set up JDK 21 | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'zulu' | ||
java-version: ${{ matrix.java-version }} | ||
kotlin-version: ${{ matrix.kotlin-version }} | ||
|
||
- name: Cache Gradle packages | ||
uses: actions/cache@v3 | ||
with: | ||
path: ~/.gradle/caches | ||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} | ||
restore-keys: ${{ runner.os }}-gradle | ||
|
||
- name: build server | ||
run: ./gradlew build -x test -DSENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} | ||
|
||
- name: docker arm64 build set up - qemu | ||
uses: docker/setup-qemu-action@v2 | ||
|
||
- name: docker arm64 build set up - buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: login github container registry | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: extract version | ||
run: echo "##[set-output name=version;]$(echo '${{ github.event.head_commit.message }}' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')" | ||
id: extract_version_name | ||
|
||
- name: push | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
platforms: linux/arm64/v8 | ||
push: true | ||
tags: | | ||
ghcr.io/depromeet/teum-teum-server/api:${{ steps.extract_version_name.outputs.version }} | ||
build-args: | | ||
"KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" | ||
"KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" | ||
"KAKAO_REDIRECT_URI=${{ secrets.KAKAO_REDIRECT_URI }}" | ||
"NAVER_CLIENT_ID=${{ secrets.NAVER_CLIENT_ID }}" | ||
"NAVER_CLIENT_SECRET=${{ secrets.NAVER_CLIENT_SECRET }}" | ||
"NAVER_REDIRECT_URI=${{ secrets.NAVER_REDIRECT_URI }}" | ||
"JWT_SECRET_KEY=${{ secrets.NAVER_REDIRECT_URI }}" | ||
"DB_URL=${{ secrets.DB_URL }}" | ||
"DB_USERNAME=${{ secrets.DB_USERNAME }}" | ||
"DB_PASSWORD=${{ secrets.DB_PASSWORD }}" | ||
"SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}" | ||
"GPT_TOKEN=${{ secrets.GPT_TOKEN }}" | ||
"REDIS_HOST=${{ secrets.REDIS_HOST }}" | ||
"REDIS_PORT=${{ secrets.REDIS_PORT }}" | ||
"AWS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}" | ||
"AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}" | ||
"AWS_REGION=${{ secrets.AWS_REGION }}" | ||
"AWS_S3_BUCKET=${{ secrets.AWS_S3_BUCKET }}" | ||
- name: create release | ||
uses: actions/create-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ steps.extract_version_name.outputs.version }} | ||
release_name: ${{ steps.extract_version_name.outputs.version }} | ||
|
||
deploy: | ||
needs: build | ||
name: deploy | ||
runs-on: self-hosted | ||
steps: | ||
- name: extract version | ||
run: echo "##[set-output name=version;]$(echo '${{ github.event.head_commit.message }}' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')" | ||
id: extract_version_name | ||
|
||
- name: run server | ||
run: | | ||
sudo docker pull ghcr.io/depromeet/teum-teum-server/api:${{ steps.extract_version_name.outputs.version }} | ||
sudo docker ps -q --filter "expose=8080" | xargs sudo docker stop | xargs sudo docker rm | ||
sudo docker run -d -p 8080:8080 ghcr.io/depromeet/teum-teum-server/api:${{ steps.extract_version_name.outputs.version }} | ||
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,67 @@ | ||
FROM openjdk:11.0.11-jre-slim | ||
|
||
ARG KAKAO_CLIENT_ID | ||
ARG KAKAO_CLIENT_SECRET | ||
ARG KAKAO_REDIRECT_URI | ||
ARG NAVER_CLIENT_ID | ||
ARG NAVER_CLIENT_SECRET | ||
ARG NAVER_REDIRECT_URI | ||
ARG JWT_SECRET_KEY | ||
ARG DB_URL | ||
ARG DB_USERNAME | ||
ARG DB_PASSWORD | ||
ARG SENTRY_AUTH_TOKEN | ||
ARG GPT_TOKEN | ||
ARG REDIS_HOST | ||
ARG REDIS_PORT | ||
ARG AWS_ACCESS_KEY | ||
ARG AWS_SECRET_KEY | ||
ARG AWS_REGION | ||
ARG AWS_S3_BUCKET | ||
|
||
ARG JAR_FILE=./build/libs/*.jar | ||
|
||
COPY ${JAR_FILE} teum.jar | ||
|
||
ENV kakao_client_id=${KAKAO_CLIENT_ID} \ | ||
kakao_client_secret=${KAKAO_CLIENT_SECRET} \ | ||
kakao_redirect_uri=${KAKAO_REDIRECT_URI} \ | ||
naver_client_id=${NAVER_CLIENT_ID} \ | ||
naver_client_secret=${NAVER_CLIENT_SECRET} \ | ||
naver_redirect_uri=${NAVER_REDIRECT_URI} \ | ||
jwt_secret_key=${JWT_SECRET_KEY} \ | ||
db_url=${DB_URL} \ | ||
db_user=${DB_USERNAME} \ | ||
db_password=${DB_PASSWORD} \ | ||
sentry_auth_token=${SENTRY_AUTH_TOKEN} \ | ||
gpt_token=${GPT_TOKEN} \ | ||
redis_host=${REDIS_HOST} \ | ||
redis_port=${REDIS_PORT} \ | ||
aws_access_key=${AWS_ACCESS_KEY} \ | ||
aws_secret_key=${AWS_SECRET_KEY} \ | ||
aws_region=${AWS_REGION} \ | ||
aws_s3_bucket=${AWS_S3_BUCKET} | ||
|
||
|
||
ENTRYPOINT java -jar teum.jar \ | ||
--spring.datasource.url=${db_url} \ | ||
--spring.security.oauth2.client.registration.kakao.client-id=${kakao_client_id} \ | ||
--spring.security.oauth2.client.registration.kakao.client-secret=${kakao_client_secret} \ | ||
--spring.security.oauth2.client.registration.kakao.redirect-uri=${kakao_redirect_uri} \ | ||
--spring.security.oauth2.client.registration.naver.client-id=${naver_client_id} \ | ||
--spring.security.oauth2.client.registration.naver.client-secret=${naver_client_secret} \ | ||
--spring.security.oauth2.client.registration.naver.redirect-uri=${naver_redirect_uri} \ | ||
--jwt.secret=${jwt_secret_key} \ | ||
--spring.datasource.url=${db_url} \ | ||
--spring.datasource.username=${db_user} \ | ||
--spring.datasource.password=${db_password} \ | ||
--spring.flyway.url=${db_url} \ | ||
--spring.flyway.user=${db_user} \ | ||
--spring.flyway.password=${db_password} \ | ||
--gpt.token=${gpt_token} \ | ||
--spring.data.redis.host=${redis_host} \ | ||
--spring.data.redis.port=${redis_port} \ | ||
--spring.cloud.aws.credentials.access-key=${aws_access_key} \ | ||
--spring.cloud.aws.credentials.secret-key=${aws_secret_key} \ | ||
--spring.cloud.aws.region.static=${aws_region} \ | ||
--spring.cloud.aws.s3.bucket=${aws_s3_bucket} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,21 @@ | ||
### PROJECT ### | ||
projectGroup=net.teumteum | ||
projectVersion=1.0 | ||
|
||
### TEST ### | ||
junitVersion=5.10.1 | ||
assertJVersion=3.24.2 | ||
|
||
### LOMBOK ### | ||
lombokVersion=1.18.30 | ||
|
||
### SPRING ### | ||
springBootVersion=3.2.0 | ||
springDependencyManagementVersion=1.1.4 | ||
|
||
### SONAR ### | ||
sonarVersion=4.4.1.3373 | ||
|
||
### MYSQL ### | ||
mysqlConnectorVersion=8.0.33 | ||
### MOCK_WEB_SERVER ### | ||
mockWebServerVersion=4.12.0 | ||
### SENTRY ### | ||
sentryVersion=4.1.1 | ||
### AWS-CLOUD ### | ||
springCloudAwsVersion=3.1.0 |
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 @@ | ||
dependencies { | ||
implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:${springCloudAwsVersion}") | ||
implementation "io.awspring.cloud:spring-cloud-aws-starter-s3" | ||
|
||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
sentry { | ||
includeSourceContext = true | ||
|
||
org = "teum-teum" | ||
projectName = "java-spring-boot" | ||
authToken = System.getProperty("SENTRY_AUTH_TOKEN") | ||
} |
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
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
25 changes: 25 additions & 0 deletions
25
src/main/java/net/teumteum/auth/controller/AuthController.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,25 @@ | ||
package net.teumteum.auth.controller; | ||
|
||
import jakarta.servlet.http.HttpServletRequest; | ||
import lombok.RequiredArgsConstructor; | ||
import net.teumteum.auth.domain.response.TokenResponse; | ||
import net.teumteum.auth.service.AuthService; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.ResponseStatus; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/auth") | ||
public class AuthController { | ||
|
||
private final AuthService authService; | ||
|
||
@PostMapping("/reissues") | ||
@ResponseStatus(HttpStatus.OK) | ||
public TokenResponse reissue(HttpServletRequest request) { | ||
return authService.reissue(request); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
src/main/java/net/teumteum/auth/controller/OAuthLoginController.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,27 @@ | ||
package net.teumteum.auth.controller; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
import net.teumteum.auth.domain.response.TokenResponse; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.bind.annotation.ResponseStatus; | ||
|
||
@Slf4j | ||
@RequestMapping | ||
@RequiredArgsConstructor | ||
public class OAuthLoginController { | ||
|
||
private final net.teumteum.auth.service.OAuthService oAuthService; | ||
|
||
@GetMapping("/logins/callbacks/{provider}") | ||
@ResponseStatus(HttpStatus.OK) | ||
public TokenResponse oAuthLogin( | ||
@PathVariable String provider, | ||
@RequestParam String code) { | ||
return oAuthService.oAuthLogin(provider, code); | ||
} | ||
} |
41 changes: 41 additions & 0 deletions
41
src/main/java/net/teumteum/auth/domain/CustomOAuthUser.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,41 @@ | ||
package net.teumteum.auth.domain; | ||
|
||
import java.util.Collection; | ||
import java.util.Map; | ||
import lombok.Getter; | ||
import net.teumteum.user.domain.User; | ||
import org.springframework.security.core.GrantedAuthority; | ||
import org.springframework.security.oauth2.core.user.OAuth2User; | ||
|
||
@Getter | ||
public class CustomOAuthUser implements OAuth2User { | ||
|
||
private final User user; | ||
private final Map<String, Object> attributes; | ||
private final Collection<? extends GrantedAuthority> authorities; | ||
|
||
public CustomOAuthUser(User user, OAuth2User oAuth2User) { | ||
this.user = user; | ||
this.attributes = oAuth2User.getAttributes(); | ||
this.authorities = oAuth2User.getAuthorities(); | ||
} | ||
|
||
@Override | ||
public Map<String, Object> getAttributes() { | ||
return attributes; | ||
} | ||
|
||
@Override | ||
public Collection<? extends GrantedAuthority> getAuthorities() { | ||
return authorities; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return user.getName(); | ||
} | ||
|
||
public Long getUserId() { | ||
return user.getId(); | ||
} | ||
} |
Oops, something went wrong.