Skip to content

Commit

Permalink
[hotfix][#224, #239] 테스트 리팩토링 및 큐레이션 API 리팩토링 (#243)
Browse files Browse the repository at this point in the history
* server initial commit

* Delete server.md

* Create README.md

* chore: yarn init

* chore: webpack 세팅

* chore: tsconfig, React 세팅

* chore: eslint, pretteir 세팅

* chore: 프로젝트 boilerplate 구현

* docs: README.md 개발 컨벤션 추가

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* [#8] 배너 생성 및 목록 조회 API 구현 (#10)

* server initial commit

* Delete server.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#7] 후원 요청 및 메시지 전송 API 구현 (#9)

* feat: 후원 요청 API 구현

* feat: 후원 요청 API 구현

* feat: 후원 메시지 전송 API 구현

* refactor: 불필요한 코드 삭제

* refactor: 불필요한 임포트 제거

* fix: 매핑 url messages 오타 수정

* refactor: 테스트 접근 제한자 private 적용

* fix : donations RequestMapping 수정

* refactor: @getter 추가 및 테스트 라이브러리 AssertJ로 변경

* Revert "[#8] 배너 생성 및 목록 조회 API 구현 (#10)"

This reverts commit d31ffda.

* [#12] 배너 생성 및 목록 조회 API 구현 (#12)

* Create README.md

* docs: README.md 개발 컨벤션 추가

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

* [#8] 배너 생성 및 목록 조회 API 구현 (#10)

* server initial commit

* Delete server.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* refactor: 리뷰 반영

* Revert "[#8] 배너 생성 및 목록 조회 API 구현 (#10)"

This reverts commit d31ffda.

Co-authored-by: hwano <jho2301@gmail.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>
Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#11] 도메인 createdDate 추가 (#13)

* feat: BaseTimeEntity 추가

* refactor: delete baseTimeEntityTest

* refactor: member repository 중복 제거

Co-authored-by: dwl5 <ssop6403@gmail.com>

* chore: 개발 환경 업데이트

- styled components 추가
- eslint 옵션 추가
- tsconfig 옵션 추가

* feat: 전역 스타일, Reset 적용

* feat: 버튼 컴포넌트 구현

- Button
- OutlineButton

Co-authored-by: Chayan <hchayan196@gmail.com>

* feat: Input 컴포넌트 구현

* feat: InputWithMessage 컴포넌트 구현

* feat: Textarea 컴포넌트 구현

* feat: Checkbox 컴포넌트구현

* refactor: styled-components, theme d.ts 파일 추가

* feat: Title 컴포넌트 구현

* feat: Noto Sans font 적용

* feat: anchor 컴포넌트 구현

* feat: Container 컴포넌트 구현

* refactor: props타입에서 children 제거

* feat: Template 컴포넌트 구현

* chore: asset 모듈 추가

* Revert "Merge pull request #22 from woowacourse-teams/feature/common-component-markup"

This reverts commit 719e3c5, reversing
changes made to bed2b54.

* [#15] JWT 토큰 관리와 인터셉터, ArgumentResolver 구현 (#17)

* feat: jwtTokenProvider 생성

* feat: ArguementsResolver, Interceptor 구현 및 Config 추가

* test: AuthenticationService 테스트 작성

* refactor: auth 관련 클래스 패키지 변경

* refactor: throws exception 구문 삭제

* refactor: 토큰 만료시간 테스트 추가 및 패키지 변경

* refactor: Authorization header 못찾을 시 예외 던지게 변경

Co-authored-by: rok93 <goodboy302@naver.com>

* [#16] OAuth2 로그인 및 회원가입 (#18)

* feat: OAuth2 카카오 로그인 구현

* feat: 구글, 카카오 oauth 연동

* feat: 로그인 데이터 properties로 분리

* feat: 회원가입 구현

* fix: oauth 로그인 안되는 현상 수정

* docs: 프로퍼티 파일 gitignore 추가

* remove properties

* refactor: ErrorResponse 생성자 제거

* refactor: oauth 기능 추상화

Co-authored-by: 김주원 <kjw11077@naver.com>

* [#34] OAuth2 로그인,회원가입 JWT 연동 (#36)

* refactor: oauth2 패키지 auth로 병합

* docs: oauth2 파일 gitignore 추가

* refactor: OAuth2 추상화 방식 변경

* refactor: Api 호출 로직 분리

* refactor: 회원가입 준비 api 구현

* refactor: readySignUp 메서드 분리

Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#37] 회원가입(멤버 생성) API (#39)

* refactor: oauth2 패키지 auth로 병합

* docs: oauth2 파일 gitignore 추가

* refactor: OAuth2 추상화 방식 변경

* refactor: Api 호출 로직 분리

* refactor: 회원가입 준비 api 구현

* refactor: readySignUp 메서드 분리

* feat: 회원가입 api 구현

Co-authored-by: dwl5 <ssop6403@gmail.com>

* fix: oauth2 jpa 테이블 명 수정 (#42)

* [#49] 랜딩페이지 주소, 닉네임 유효성 검사, 창작자 정보 요청, 창작자 포인트 조회 API (#53)

* feat: langdingPageUrl 유효성 검사 api 구현

* feat: nickName 유효성 검사 api 구현

* refactor: OAuth -> Oauth 네이밍 변경

* refactor: NickName -> Nickname 네이밍 변경

* refactor: 토큰 claim에 id 추가

* feat: 창작자 소유 포인트 조회 api 구현

* refactor: Donation 엔티티 isPublic 필드추가

* feat: Interceptor 패턴 지정

Co-authored-by: 김주원 <kjw11077@naver.com>

* docs: develop-server backend 크루 이름 추가 (#60)

* docs: backend 기술 스택 추가

* docs: 기술 스택 추가 (jenkins-test)

* docs: 기술 스택 추가 (jenkins-test)

* docs: 기술 스택 추가 (jenkins-test)

* [#54] 현재까지 구현한 API의 테스트 코드를 작성한다 (#61)

* refactor: urlName -> pageName 리네이밍

* refactor: Message VO로 캡슐화

* refactor: API /me 붙이는걸로 변경

* test: Donation 인수테스트, isPublic -> secret 리네임

* test: Banner 인수테스트 작성

* test: Member 인수테스트 작성, DonationServiceTest 오류수정

* test: 예외 테스트

* [#58] 후원 리스트 API 작성 (#65)

* refactor: 수정되지 않은 이전 필드명 수정

* feat: 공개 후원 리스트 조회 api 구현 및 테스트 코드 작성

* feat: donationRepository 메서드 추가 및 테스트

* feat: DonationService 메서드 내부로직 구현

* refactor: DonationController 내부 채우기

* refactor: 수리 코드 리뷰 피드백 반영

* feat: 후원 리스트 조회 인수테스트 생성

* refactor: Secret여부가 true인 후원만 가리게끔 수정

* refactor: service가 아닌 repository를 이용한 멤버 탐색

* refactor: DonationMessageRequest toEntity 메서드 생성

* docs: update README.md

* [#73]PROD 서버 CI/CD 동작을 테스트 (#74)

* server initial commit

* Delete server.md

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* docs: docs: update README.md

* [#55, #67] 예외 핸들링 구현 및 API 리팩토링 (#71)

* feat: BaseException 및 ControllerAdviceHandler 추가

* feat: /donations api 예외 로직 처리

* refactor: /donations request 필드 변경에 따른 로직 변경

* feat: /donations/{donationId}/messages api 예외 로직 처리

* feat: auth 관련 익셉션 추가

* feat: /banners api 예외 로직 처리

* feat: /members/validate/pageName api 에러 로직 처리

* feat: /members/validate/nickname api 에러 로직 처리

* refactor: @Valid 놓친 부분 달아줌

* refactor: 코드 정리, 간단한 리팩터링

* test: 후원 테스트 추가, 테스트 리팩터링

* feat: 멤버,OAuth2 예외 케이스 핸들링 구현

* refactor: 오타수정,리포맷팅

* feat: 인증 인터셉터 정책 추가

* refactor: @Valid 빠트린 곳 추가

* refactor: 공백한칸추가

* refactor: @ControllerAdvice -> @RestControllerAdvice 변경

* feat: SignUpRequestException 추가

* docs: TODO 추가

* refactor: 커스텀예외클래스의 ERROR_CODE 상수를 public으로 변경

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#63]Prod-Server의 설정파일을 생성 (#72)

* chore: jasypt 의존성 추가

* feat: JasyptConfig 추가

* chore: oauth2 설정파일 gitignore에서 제거

* feat: jasypt secret ket 외부에서 가져오도록 수정

* feat: properties 파일 분리 및 암호화

* refactor: 코드정리

* fix: include property 관련 에러 수정

* chore: mysql 의존성 추가

* refactor: encrytor config 생성 로직 분리

* refactor: @EnableEncryptableProperties 어노테이션 제거

* refactor: jashpyStringEncrytor 이름 정해주는 부분 제거

* feat: application-test 추가

* refactor: jasypt test환경에서 실행하지 않도록 수정

* [#77] 창작자가 자신의 정보를 조회하는 API를 작성한다. (#78)

* feat: 창작자 자신의 정보 조회 API 작성,테스트

* refactor: 오타수정,간단한 리팩터링

* refactor: MemberPrivateResponse -> MemberDetailResponse 리네임

* feat: cors 설정 추가 (#88)

* [#84] 후원금 순 큐레이션 리스트를 보여준다. (#85)

* feat: curation list api 구현

* refactor: CurationsResponse 필드에 pageName 추가

* [#83]로그인/회원 가입 리다이렉트 URL을 분리 (#86)

* feat: Oauth2 login, signup redirect url 분기

* feat: oauth2 요청 정보를 담는 DTO 생성

* feat: Oauth2InfoDto 반영

* refactor: Oauth2Info -> Oauth2Request로 이름 변경

* fix: kakao test secret id 추가

* refactor: login, readySignup 라인 분리

* feat: Dev-Server의 mock data 추가 기능 구현 (#93)

* refactor: memberRepositoryImplTest fix

* feat: 토큰 유효성 검증 API 구현,테스트 (#96)

* [#89]DB 서버 테이블 업데이트 (#100)

* chore: allowPublicKeyRetrieval 속성 추가

* chore: application.yml ddl-auto 속성 제거

* [#107] CORS 에러 수정 (#108)

* fix: intercepter prefilight 설정

* fix: cors addMapping 패턴 수정

* fix: oauth2 property type 대문자로 수정 (#110)

* [#92] repository, service, controller 슬라이싱 테스트 보강 (#101)

* refactor: Member, Point 도메인 테스트 추가

* feat: Domain, Message 도메인 테스트 추가

* feat: MemberServiceTest 작성

* feat: DonationServiceTest 추가 및 List<Donation> 필드 속성 변경

* refactor: MemberRepositoryTest 보완

* refactor: DonationRepositoryTest 변경

* refactor: Banner 패키징 변경

* feat: BannerServiceTest 작성

* refactor: AuthenticationService 슬라이싱 테스트로 변경

* refactor: @EnableJpaAuditing 선언 위치 변경

@WebMvcTest 시에 jpa 생성과 관련된 기능이 들어오지 않는데 main 함수가 속한 클래스 위에 있으면 이 떄문에 테스트 위에 추가적인 어노테이션이 계속해서 붙게된다. reference: https://1-7171771.tistory.com/136?category=981620

* refactor: cors mapping 선언 위치 변경

* feat: MemberController Test 작성

* feat: DonationControllerTest 작성

* feat: BannerControllerTest 작성

* refactor: 인수테스트 깨짐 원인 해결을 위한 디폴트 생성자 추가

* refactor: 에러코드 상수로 호출

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>

* refactor: 접근 제어자 빠진것 붙여주기

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>

* refactor: 에러코드 상수호출로 변경

* refactor: 정상적인 interceptor&resolver 모킹작업 메서드 분리

* refactor: conflict 처리

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#111] 후원 기록(전체 후원 리스트, 공개 후원 리스트)에 createdDate 정보 추가 (#112)

* refactor: 중복되는 cors 설정 제거

* fix: 통과하지 못하는 테스트 코드 수정 및 불필요한 import 제거

* feat: 후원 기록에 createdAt data 추가

후원 기록(전체 후원 리스트, 공개 후원 리스트)에 '생성일자' 정보를 추가한다.

* [#115]Logging 추가 (#116)

* chore: logback-slack 의존성 추가

* chore: logback 설정 추가

* feat: logging 적용 및 미정의 에러 처리 추가

* [#113] /members/validate/token 컨트롤러 테스트 코드 추가 및 repositoryTest @import 추가 (#119)

* refactor: import annotation added

* feat: TokenValidation Test 추가

* refactor: signup Redirect URL 변경 (#121)

* [#124]oauth2.0 리다이렉트 URL 추가  (#125)

* feat: prod 로그인 관련 리다이렉트 URL 추가

* feat: prod 회원 가입 관련 리다이렉트 URL 수정

* Delete index.html

* [#120, #128] Rest Docs 연동 및 후원자 이름 기본값 변경 (#126)

* refactor: RestDocs 설정 추가

* refactor: MemberControllerTest restDocs 코드 추가

* refactor: BannerControllerTest restDocs 코드 추가

* refactor: DonationControllerTest restDocs 코드 추가

* docs: index.adoc 생성

* refactor: enum toUpperCase 추가

* refactor: 테스트용 html 파일 삭제

* refactor: asciidoctor 버전 변경

* refactor: gradle 및 부트 버전 다운그레이드

* refactor: 후원 이름 default,secret name 변경

* refactor: restDocs를 위한 gradle 설정 변경

* refactor: logback console 나오도록 수정

Co-authored-by: dwl5 <ssop6403@gmail.com>

* chore: dev-server의 ddl-auto 설정을 update로 변경 (#138)

dev-server가 매번 배포될 때마다 데이터가 초기화되지 않도록 설정

* refactor: if문 하나 걸어줌 (#139)

* Revert "[#73]PROD 서버 CI/CD 동작을 테스트 (#74)"

This reverts commit c278d99.

* docs: update README.md

* feat: 프론트 배포 CORS 설정 (#142)

* release v1.0.0 (#148)

* docs: update README.md

* [#73]PROD 서버 CI/CD 동작을 테스트 (#74)

* server initial commit

* Delete server.md

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* docs: docs: update README.md

* Revert "[#73]PROD 서버 CI/CD 동작을 테스트 (#74)"

This reverts commit c278d99.

* Release for tyf server v1.0 (#143)

* server initial commit

* Delete server.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* [#7] 후원 요청 및 메시지 전송 API 구현 (#9)

* feat: 후원 요청 API 구현

* feat: 후원 요청 API 구현

* feat: 후원 메시지 전송 API 구현

* refactor: 불필요한 코드 삭제

* refactor: 불필요한 임포트 제거

* fix: 매핑 url messages 오타 수정

* refactor: 테스트 접근 제한자 private 적용

* fix : donations RequestMapping 수정

* refactor: @getter 추가 및 테스트 라이브러리 AssertJ로 변경

* [#12] 배너 생성 및 목록 조회 API 구현 (#12)

* Create README.md

* docs: README.md 개발 컨벤션 추가

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

* [#8] 배너 생성 및 목록 조회 API 구현 (#10)

* server initial commit

* Delete server.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* refactor: 리뷰 반영

* Revert "[#8] 배너 생성 및 목록 조회 API 구현 (#10)"

This reverts commit d31ffda.

Co-authored-by: hwano <jho2301@gmail.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>
Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#11] 도메인 createdDate 추가 (#13)

* feat: BaseTimeEntity 추가

* refactor: delete baseTimeEntityTest

* refactor: member repository 중복 제거

Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#15] JWT 토큰 관리와 인터셉터, ArgumentResolver 구현 (#17)

* feat: jwtTokenProvider 생성

* feat: ArguementsResolver, Interceptor 구현 및 Config 추가

* test: AuthenticationService 테스트 작성

* refactor: auth 관련 클래스 패키지 변경

* refactor: throws exception 구문 삭제

* refactor: 토큰 만료시간 테스트 추가 및 패키지 변경

* refactor: Authorization header 못찾을 시 예외 던지게 변경

Co-authored-by: rok93 <goodboy302@naver.com>

* [#16] OAuth2 로그인 및 회원가입 (#18)

* feat: OAuth2 카카오 로그인 구현

* feat: 구글, 카카오 oauth 연동

* feat: 로그인 데이터 properties로 분리

* feat: 회원가입 구현

* fix: oauth 로그인 안되는 현상 수정

* docs: 프로퍼티 파일 gitignore 추가

* remove properties

* refactor: ErrorResponse 생성자 제거

* refactor: oauth 기능 추상화

Co-authored-by: 김주원 <kjw11077@naver.com>

* [#34] OAuth2 로그인,회원가입 JWT 연동 (#36)

* refactor: oauth2 패키지 auth로 병합

* docs: oauth2 파일 gitignore 추가

* refactor: OAuth2 추상화 방식 변경

* refactor: Api 호출 로직 분리

* refactor: 회원가입 준비 api 구현

* refactor: readySignUp 메서드 분리

Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#37] 회원가입(멤버 생성) API (#39)

* refactor: oauth2 패키지 auth로 병합

* docs: oauth2 파일 gitignore 추가

* refactor: OAuth2 추상화 방식 변경

* refactor: Api 호출 로직 분리

* refactor: 회원가입 준비 api 구현

* refactor: readySignUp 메서드 분리

* feat: 회원가입 api 구현

Co-authored-by: dwl5 <ssop6403@gmail.com>

* fix: oauth2 jpa 테이블 명 수정 (#42)

* [#49] 랜딩페이지 주소, 닉네임 유효성 검사, 창작자 정보 요청, 창작자 포인트 조회 API (#53)

* feat: langdingPageUrl 유효성 검사 api 구현

* feat: nickName 유효성 검사 api 구현

* refactor: OAuth -> Oauth 네이밍 변경

* refactor: NickName -> Nickname 네이밍 변경

* refactor: 토큰 claim에 id 추가

* feat: 창작자 소유 포인트 조회 api 구현

* refactor: Donation 엔티티 isPublic 필드추가

* feat: Interceptor 패턴 지정

Co-authored-by: 김주원 <kjw11077@naver.com>

* docs: develop-server backend 크루 이름 추가 (#60)

* docs: backend 기술 스택 추가

* docs: 기술 스택 추가 (jenkins-test)

* docs: 기술 스택 추가 (jenkins-test)

* docs: 기술 스택 추가 (jenkins-test)

* [#54] 현재까지 구현한 API의 테스트 코드를 작성한다 (#61)

* refactor: urlName -> pageName 리네이밍

* refactor: Message VO로 캡슐화

* refactor: API /me 붙이는걸로 변경

* test: Donation 인수테스트, isPublic -> secret 리네임

* test: Banner 인수테스트 작성

* test: Member 인수테스트 작성, DonationServiceTest 오류수정

* test: 예외 테스트

* [#58] 후원 리스트 API 작성 (#65)

* refactor: 수정되지 않은 이전 필드명 수정

* feat: 공개 후원 리스트 조회 api 구현 및 테스트 코드 작성

* feat: donationRepository 메서드 추가 및 테스트

* feat: DonationService 메서드 내부로직 구현

* refactor: DonationController 내부 채우기

* refactor: 수리 코드 리뷰 피드백 반영

* feat: 후원 리스트 조회 인수테스트 생성

* refactor: Secret여부가 true인 후원만 가리게끔 수정

* refactor: service가 아닌 repository를 이용한 멤버 탐색

* refactor: DonationMessageRequest toEntity 메서드 생성

* [#55, #67] 예외 핸들링 구현 및 API 리팩토링 (#71)

* feat: BaseException 및 ControllerAdviceHandler 추가

* feat: /donations api 예외 로직 처리

* refactor: /donations request 필드 변경에 따른 로직 변경

* feat: /donations/{donationId}/messages api 예외 로직 처리

* feat: auth 관련 익셉션 추가

* feat: /banners api 예외 로직 처리

* feat: /members/validate/pageName api 에러 로직 처리

* feat: /members/validate/nickname api 에러 로직 처리

* refactor: @Valid 놓친 부분 달아줌

* refactor: 코드 정리, 간단한 리팩터링

* test: 후원 테스트 추가, 테스트 리팩터링

* feat: 멤버,OAuth2 예외 케이스 핸들링 구현

* refactor: 오타수정,리포맷팅

* feat: 인증 인터셉터 정책 추가

* refactor: @Valid 빠트린 곳 추가

* refactor: 공백한칸추가

* refactor: @ControllerAdvice -> @RestControllerAdvice 변경

* feat: SignUpRequestException 추가

* docs: TODO 추가

* refactor: 커스텀예외클래스의 ERROR_CODE 상수를 public으로 변경

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#63]Prod-Server의 설정파일을 생성 (#72)

* chore: jasypt 의존성 추가

* feat: JasyptConfig 추가

* chore: oauth2 설정파일 gitignore에서 제거

* feat: jasypt secret ket 외부에서 가져오도록 수정

* feat: properties 파일 분리 및 암호화

* refactor: 코드정리

* fix: include property 관련 에러 수정

* chore: mysql 의존성 추가

* refactor: encrytor config 생성 로직 분리

* refactor: @EnableEncryptableProperties 어노테이션 제거

* refactor: jashpyStringEncrytor 이름 정해주는 부분 제거

* feat: application-test 추가

* refactor: jasypt test환경에서 실행하지 않도록 수정

* [#77] 창작자가 자신의 정보를 조회하는 API를 작성한다. (#78)

* feat: 창작자 자신의 정보 조회 API 작성,테스트

* refactor: 오타수정,간단한 리팩터링

* refactor: MemberPrivateResponse -> MemberDetailResponse 리네임

* feat: cors 설정 추가 (#88)

* [#84] 후원금 순 큐레이션 리스트를 보여준다. (#85)

* feat: curation list api 구현

* refactor: CurationsResponse 필드에 pageName 추가

* [#83]로그인/회원 가입 리다이렉트 URL을 분리 (#86)

* feat: Oauth2 login, signup redirect url 분기

* feat: oauth2 요청 정보를 담는 DTO 생성

* feat: Oauth2InfoDto 반영

* refactor: Oauth2Info -> Oauth2Request로 이름 변경

* fix: kakao test secret id 추가

* refactor: login, readySignup 라인 분리

* feat: Dev-Server의 mock data 추가 기능 구현 (#93)

* refactor: memberRepositoryImplTest fix

* feat: 토큰 유효성 검증 API 구현,테스트 (#96)

* [#89]DB 서버 테이블 업데이트 (#100)

* chore: allowPublicKeyRetrieval 속성 추가

* chore: application.yml ddl-auto 속성 제거

* [#107] CORS 에러 수정 (#108)

* fix: intercepter prefilight 설정

* fix: cors addMapping 패턴 수정

* fix: oauth2 property type 대문자로 수정 (#110)

* [#92] repository, service, controller 슬라이싱 테스트 보강 (#101)

* refactor: Member, Point 도메인 테스트 추가

* feat: Domain, Message 도메인 테스트 추가

* feat: MemberServiceTest 작성

* feat: DonationServiceTest 추가 및 List<Donation> 필드 속성 변경

* refactor: MemberRepositoryTest 보완

* refactor: DonationRepositoryTest 변경

* refactor: Banner 패키징 변경

* feat: BannerServiceTest 작성

* refactor: AuthenticationService 슬라이싱 테스트로 변경

* refactor: @EnableJpaAuditing 선언 위치 변경

@WebMvcTest 시에 jpa 생성과 관련된 기능이 들어오지 않는데 main 함수가 속한 클래스 위에 있으면 이 떄문에 테스트 위에 추가적인 어노테이션이 계속해서 붙게된다. reference: https://1-7171771.tistory.com/136?category=981620

* refactor: cors mapping 선언 위치 변경

* feat: MemberController Test 작성

* feat: DonationControllerTest 작성

* feat: BannerControllerTest 작성

* refactor: 인수테스트 깨짐 원인 해결을 위한 디폴트 생성자 추가

* refactor: 에러코드 상수로 호출

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>

* refactor: 접근 제어자 빠진것 붙여주기

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>

* refactor: 에러코드 상수호출로 변경

* refactor: 정상적인 interceptor&resolver 모킹작업 메서드 분리

* refactor: conflict 처리

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#111] 후원 기록(전체 후원 리스트, 공개 후원 리스트)에 createdDate 정보 추가 (#112)

* refactor: 중복되는 cors 설정 제거

* fix: 통과하지 못하는 테스트 코드 수정 및 불필요한 import 제거

* feat: 후원 기록에 createdAt data 추가

후원 기록(전체 후원 리스트, 공개 후원 리스트)에 '생성일자' 정보를 추가한다.

* [#115]Logging 추가 (#116)

* chore: logback-slack 의존성 추가

* chore: logback 설정 추가

* feat: logging 적용 및 미정의 에러 처리 추가

* [#113] /members/validate/token 컨트롤러 테스트 코드 추가 및 repositoryTest @import 추가 (#119)

* refactor: import annotation added

* feat: TokenValidation Test 추가

* refactor: signup Redirect URL 변경 (#121)

* [#124]oauth2.0 리다이렉트 URL 추가  (#125)

* feat: prod 로그인 관련 리다이렉트 URL 추가

* feat: prod 회원 가입 관련 리다이렉트 URL 수정

* Delete index.html

* [#120, #128] Rest Docs 연동 및 후원자 이름 기본값 변경 (#126)

* refactor: RestDocs 설정 추가

* refactor: MemberControllerTest restDocs 코드 추가

* refactor: BannerControllerTest restDocs 코드 추가

* refactor: DonationControllerTest restDocs 코드 추가

* docs: index.adoc 생성

* refactor: enum toUpperCase 추가

* refactor: 테스트용 html 파일 삭제

* refactor: asciidoctor 버전 변경

* refactor: gradle 및 부트 버전 다운그레이드

* refactor: 후원 이름 default,secret name 변경

* refactor: restDocs를 위한 gradle 설정 변경

* refactor: logback console 나오도록 수정

Co-authored-by: dwl5 <ssop6403@gmail.com>

* chore: dev-server의 ddl-auto 설정을 update로 변경 (#138)

dev-server가 매번 배포될 때마다 데이터가 초기화되지 않도록 설정

* refactor: if문 하나 걸어줌 (#139)

* docs: update README.md

* feat: 프론트 배포 CORS 설정 (#142)

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>
Co-authored-by: 김주원 <kjw11077@naver.com>
Co-authored-by: hwano <jho2301@gmail.com>
Co-authored-by: rok93 <goodboy302@naver.com>

* Release for tyf client v1.0.0  (#147)

* chore: yarn init

* chore: webpack 세팅

* chore: tsconfig, React 세팅

* chore: eslint, pretteir 세팅

* chore: 프로젝트 boilerplate 구현

* chore: 개발 환경 업데이트

- styled components 추가
- eslint 옵션 추가
- tsconfig 옵션 추가

* feat: 전역 스타일, Reset 적용

* feat: 버튼 컴포넌트 구현

- Button
- OutlineButton

Co-authored-by: Chayan <hchayan196@gmail.com>

* feat: Input 컴포넌트 구현

* feat: InputWithMessage 컴포넌트 구현

* feat: Textarea 컴포넌트 구현

* feat: Checkbox 컴포넌트구현

* refactor: styled-components, theme d.ts 파일 추가

* feat: Title 컴포넌트 구현

* feat: Noto Sans font 적용

* feat: anchor 컴포넌트 구현

* feat: Container 컴포넌트 구현

* refactor: props타입에서 children 제거

* feat: Template 컴포넌트 구현

* chore: asset 모듈 추가

* Delete node_modules directory

* Delete yarn.lock

* feat: PUBLIC_URL 환경변수 세팅

* feat: 구글, 카카오, 네이버 로고 svg 파일 추가

* feat: ButtonWithIcon, OutlineButtonWithIcon molecule 컴포넌트 구현

* feat: svg, png, gif, jpg, jpeg 파일 import 사용 위한 custom.d.ts 구현

* feat: assets 폴더 src 내로 이동

* feat: LoginPage 구현

* refactor: style 블록 줄바꿈 일부 개선

* refactor: buttonWithIcon에서 img properties도 받는 방식으로 변경

* feat: IconButton 컴포넌트 구현

* feat: NavBar 컴포넌트 마크업 구현

* feat: Footer 컴포넌트 구현

* feat: NavBar, Footer min-width 적용

* refactor: buttonWithIcon 네이밍 변경

* test: BarButtonWithIcon, OutlineBarButtonWithIcon Storybook 테스트 구현

* feat: RegisterTermsPage 컴포넌트 구현

* refactor: LoginPage style 네이밍 개선 및 주석 제거

* feat: RegisterAuthPage 컴포넌트 구현

* style: StyledInputWithMessage 너비, 높이값 수정

* feat: RegisterAddressPage 컴포넌트 구현

* style: input 태그 기본 폰트 사이즈 추가

* style: 불필요한 스타일 확장자 제거

* feat: RegisterNamePage 컴포넌트 구현

* feat: RegisterSuccessPage 컴포넌트 구현

* refactor: 일부 파일 import 순서 변경

* feat: 메인페이지 마크업 구현

* test: 로그인, 회원가입페이지 스토리북 추가

* feat: Profile 컴포넌트 구현

* style: subTitle 컴포넌트 텍스트 색상 변경

* feat: CreatorPage 컴포넌트 구현

* refactor: Comments 컴포넌트 분리

* feat: StatisticsPage 컴포넌트 구현

* refactor: 컴포넌트 import 순서 및 타입 누락 해결

* feat: 후원 금액 텍스트 사이즈 증가

* feat: Profile 컴포넌트 구현

* style: subTitle 컴포넌트 텍스트 색상 변경

* feat: CreatorPage 컴포넌트 구현

* refactor: Comments 컴포넌트 분리

* feat: StatisticsPage 컴포넌트 구현

* refactor: 컴포넌트 import 순서 및 타입 누락 해결

* feat: 후원 금액 텍스트 사이즈 증가

* test: 로그인, 회원가입페이지 스토리북 추가

* Delete settings.json

* feat: Donation 페이지 마크업 구현

Co-authored-by: Chayan <hchayan196@gmail.com>

* feat: MessageForm 컴포넌트 마크업 구현

* feat: 후원 성공 페이지 마크업 구현

* feat: Modal 컴포넌트 구현

* feat: Menu 컴포넌트 마크업 구현

* style: import문 정리

* Delete settings.json

* chore: react-router-dom 설치

* feat: 기본 router 생성

* feat: navBar 구조 및 스타일 개선

* feat: 메인, 로그인페이지 구조 및 스타일 개선

* feat: 회원가입 약관 페이지 구조 및 스타일 개선

* feat: 회원가입 절차 페이지 구조 및 스타일 개선

* feat: 후원 절차 페이지 구조 및 스타일 개선

* feat: 창작자 페이지 구조 및 스타일 개선

* feat: 컴포넌트 라우터 복구 및 일부 오류 개선

* test: storybook 미적용 페이지 적용, react-router를 테스트 툴에 추가

* refactor: 불필요 import 제거

* refactor: LoginForm 컴포넌트 분리

* refactor: Register 관련 Forms 컴포넌트 분리

* chore: 테스트 환경 완벽 세팅

* feat: 이용약관 체크박스 toggle 구현, 전체 toggle 구현, 버튼 조건부 활성화 구현

* feat: 이용약관 상세설명 모달 구현

* feat: google, kakao 외부 인증 회원가입 연동

* chore: 배포 테스트 위한 netlify 설정 코드 추가

* refactor: oauth 주소 상수화

* feat: useRegister로 terms state 분리 및 이용약관 페이지 출력 방식 변경

* test: 회원가입 이용약관 페이지 테스트 구현

* refactor: oauth 상수화

* refactor: 외부인증 사이트 이미지 attr 사용 및 일부 리팩토링

* refactor: useRegister 페이지별 분리 및 event 전달방식 개선

* feat: axios 세팅 및 공통 디렉토리 세팅

- service/request
- service/state
- service/hooks
- API.ts

* feat: 메인페이지, 창작자 리스트 불러오기

* test: 창작자 리스트를 조회한다.

* feat: 주소명 유효성 검사 구현

* refactor: 주소 입력 서비스로직 커스텀훅으로 분리

* feat: 유효성 검사 방식, 입력 방지 기능 제거

* feat: axios 세팅 및 공통 디렉토리 세팅

- service/request
- service/state
- service/hooks
- API.ts

* refactor: 카카오, 네이버, 구글 버튼 모듈화

* refactor: OAuth 인증페이지로 route하는 함수 개선

* feat: 사용자는 로그인을 할 수 있다.

* feat: 로고버튼을 누르면 홈화면으로 이동한다

* refactor: newUser 전역 정보 구현 및 역할 분리

* feat: 메뉴창을 열고 닫을 수 있다

* feat: NavBar Menu 라우팅 및 로그인 / 로그아웃 동작

* feat: 도네이션 URL 모바일 공유하기

* feat: 도네이션 URL 모바일 공유하기

* fix: null-possible 코드에 타입가드 로직 추가

* refact: 주소명 db 유효성 검사 로직 분리

* feat: web share API 없는 경우 clipboard에 복사

* feat: 닉네임 유효성 검사 구현

* fix: axios interceptor response 그대로 반환

* feat: 닉네임 DB 유효성 검사 템플릿 구현

* feat: 사용자가 기존에 유효한 토큰을 갖고 있을 때 로그인이 유지된다.

* feat: 사용자가 로그인 유지 기한을 선택할 수 있다.

* refactor: useTerms 네이밍 변경 및 상수명 변경

* refactor: 닉네임, 주소 길이 상수화

* feat: 회원가입 완료페이지 구현

* feat: 회원가입 api 연동

* feat: 로그인한 유저의 총 후원금액을 나타낸다.

* refactor: 상수 대문자화 및 일부 리팩토링

* refactor: 상수 대문자, selector suffix 변경, 일부 리팩토링

* fix: 흐름 경로 라우터 수정

* test: 창작자의 총 후원 금액을 나타낸다

* test: 회원가입 주소 입력, 닉네임 입력 페이지 테스트 구현

* feat: 창작자  프로필 컴포넌트 구현

* feat: 창작자 랜딩페이지 불러오기 기능 구현

* feat: 창작자 공개후원 목록 불러오기 기능 구현

* feat: 더보기 버튼 조건부 렌더링 및 import 순서, 파일명 리팩토링

* feat: admin 여부에 따른 후원목록 조건부 렌더링 구현 및 일부 리팩토링

* chore: webpack nested 경로 접근시 접근 불가 에러 해결

* feat: 더보기 page state와 페이지 라우팅 구현

* fix: API axios 기본 설정 증발 해결

* feat: 후원 날짜 정보 표기 추가

* fix: 창작자 리스트 불러오는 path 수정

* feat: 후원자는 창작자에게 후원할 수 있다

* feat: 사용자는 후원 메시지를 보낼 수 있다

* refactor: currentPage로 변수명 간략화

* refactor: 상수화

* fix: 창작자리스트 프로필사진 디폴트 이미지로 대체

* fix: 창작자 리스트 디폴트 이미지 설정

* oauth redirect_uri 설정

* refactor: 피드백 적용 및 useEffect 제거

* fix: donationList 조건부 값 할당 오류 수정

* fix: 프로필 이미지 정렬 재조정

* feat: 창작자 랜딩페이지에서 후원페이지로 이동할 수 있다

* feat: 창작자 페이지로 이동시 새창 생성 후 기존 팝업창은 close

* fix: 로그인페이지 에러 특정짓지 못하는 이슈

* refactor: 구조 개선

* feat: oauth, 회원가입 api 연동

* feat: 후원 목록 없을때 컴포넌트 구현

* feat: accessToken을 이용한 창작자 페이지 조건부 렌더링 구현

* chore: netlify 설정 파일 위치 개선

* fix: 후원 금액 입력 정상화

인풋을 빈칸으로 만들고 금액추가 버튼을 누르면 금액이 추가되지 않는 현상

* fix: aceessToken 읽어오기 문제 해결

* feat: accessToken 이용한 창작자 본인 확인 기능 구현

* refactor: console.log 제거

This reverts commit 4be79fe.

* refactor: 더보기 버튼 조건부 렌더링 조건 변수화

* fix: console.log 제거

* fix: 후원 성공 페이지 새로고침시 창닫힘

* fix: 회원가입 후 자동으로 로그인되지 않는 현상

* fix: 후원 관련 페이지 레이아웃 수정

* fix: 로고 스크롤 적용

* style: 후원 플로우 페이지 한 페이지 안에 모든 컨텐츠 다 보이게 스타일 조정

* fix: 통계 페이지가 노출되지 않는 현상

* fix: 로그아웃시 스토리지 값 제거

* feat: 회원가입 정보 없으면 home으로 이동 구현

* feat: privateRouting 구현 및 로그인, 회원가입 플로우, 후원통계 페이지에 적용

* refactor: 회원가입 성공 유무에 따른 라우팅 커스텀 훅으로 이동

* fix: 회원가입 성공 페이지 조건부렌더링 해결 및 console.log 제거

* fix: 후원메세지 더보기시 스크롤이 위로올라가는현상

* chore: webpack production, development config 구현

* feat: favicon 추가

* fix: favicon 경로 문제 수정

* fix: webpack production mode netlify refresh 오류 개선

* chore: favicon 세팅

* feat: 메뉴 스타일 조정

* fix: 창작자 랜딩페이지로 이동시 로그인화면으로 리다이렉션되는 현상

- 서스펜스바운더리를 같이 사용하지 않게함

* refactor: logo.png svg로 변경

* feat: 메뉴 스타일 조정

* fix: 로그인버튼 클릭시 새창이 뜨는 현상

* feat: 후원메시지 본문 스타일 조정

Co-authored-by: Chayan <hchayan196@gmail.com>
Co-authored-by: Chayan <chayans999@gmail.com>

Co-authored-by: dwl5 <ssop6403@gmail.com>
Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>
Co-authored-by: 김주원 <kjw11077@naver.com>
Co-authored-by: rok93 <goodboy302@naver.com>
Co-authored-by: Chayan <hchayan196@gmail.com>
Co-authored-by: Chayan <chayans999@gmail.com>

* fix: 후원메세지가 5개일 때 더보기가 사라지지 않는 현상 (#149)

Co-authored-by: jho2301 <jho2301@gmail.com>

* feat: submodule added (#152)

* Delete application-oauth2-dev.yml

* feat: yamlController (#153)

* [#151] GitSubmodule 도입 (#154)

* refactor: jasypt 관련 삭제

* refactor: 암호화된 yml필드 삭제

* Update securityKey

* refactor: gradle copySecret task 변경

* feat: S3 연결

* 프로필 이미지 등록, 수정, 삭제 api 구현 (#157)

* refactor: S3 관련 클래스 패키지 구조 변경

* feat: profile 관련 Controller 메서드 및 Service 메서드 작성

* feat: CloudFronUrlGenerator 구현

* feat: S3 upload 코드 구현

* feat: profile image 삭제 기능 구현

* test: CloudFrontUrlGenerator 테스트 추가

* test: Upload ProfileImage Repository test 추가

* test: Upload ProfileImage Service test 추가

* feat: s3 스토리지에서 파일을 찾을 수 없는 예외 추가

* test: Upload ProfileImage Controller test 추가

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* feat: image profile upload/delete 기능 구현 (#158)

* feat: s3 파일 확장자 추가

* feat: S3 file not found exception 메시지 추가

* fix: db에 profile filename 만 저장하도록 수정

* test: upload profile 테스트 제거

* fix: if문 return 반영

* refactor: h2 console on

* refactor: web-allow-others 속성 변경

* refactor: 메세지 비공개 프로세스 변경 (#161)

* feat: s3 not found 케이스 테스트 추가 (#163)

* [#162]프로필 이미지 Api RestDocs 반영 (#167)

* feat: restdocs index.html config 추가

* feat: profile api restdocs 반영

* test: 테스트 코드 정리

* refactor: s3 파일 저장 경로 변경 (#169)

* refactor: 유효성 검사 변경 (#184)

* refactor: test fixed

* [#164]아임포트 결제 도메인, API 작성 (#188)

* feat: 아임포트 API 작성 중간커밋

* feat: 주문번호 생성하기 기능, 아엠포트 서버 액세스 토큰 발급 기능 및 결제정보 조회 기능

* refactor: Donation request 필드 변경

creator의 식별자 변경 (nickName -> pageName)

* feat: 결제 플로우 구현

* test: 결제 플로우 구현에 따른 테스트 변경

* refactor: dataloader payment 에러 수정

* test: DonationRepositoryTest 깨짐 수정

* feat: PaymentRequest 유효성 추가

* refactor: 결제 로직 리팩토링 (iamport 결제로직 분리)

* test: payment 도메인 테스트 추가

* refactor: IamPortPaymentServiceConnector @component추가

* refactor: donation service, acceptance 테스트 수정

* refactor: jwtTokenProviderTest ActiveProfile 설정 추가

* refactor: DataLoader dev만 적용되도록 수정

* refactor: 후원금액 총 합 payment의 값으로 더 해주도록 수정

* refactor: CloudFrontUrlGenerator ActiveProfile추가

* refactor: DonationService Payment Mock 추가

* refactor: 불필요한 import 삭제

* refactor: request url changed

* refactor: yml 파일 iamport 설정 추가 및 DonationService 이전으로 변경

* test: donation 인수테스트 disable 처리

* refactor: 간단한 리팩터링

* test: DonationControllerTest 테스트케이스 수정

* refactor: 도네이션 entity save로 리턴된 값 사용

* feat: Payment 예외 처리 추가

* refactor: PaymentInfo 변수 명 수정

* refactor: payment 정보 유효성 검사 메소드 분리

* refactor: paymentComplete 메소드 제거

* refactor: iamport DTO tostring 제거

* refactor: index.html 변경 사항 반영

Co-authored-by: 김주원 <kjw11077@naver.com>
Co-authored-by: rok93 <goodboy302@naver.com>
Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* refactor: test

* Update TyfServerApplication.java

* fix: 젠킨스 테스트

* Update TyfServerApplication.java

* Update TyfServerApplication.java

* Update TyfServerApplication.java (#192)

* Update TyfServerApplication.java (#194)

* Update TyfServerApplication.java

* Update TyfServerApplication.java (#195)

* [#191] 자기소개, 닉네임 변경 API 작성  (#197)

* feat: 자기소개(BIO) update API

* style: 불필요한 todo 주석 제거

* feat: 닉네임(NickName) update API

* refactor: 개행 형식 통일되도록 변경

* refactor: Nickname 변경 요청 DTO 수정

* refactor: 예외 error message 수정

* refactor: NickName이라고 표기법이 잘못된 표기 Nickname으로 변경

* test: 예외 테스트 케이스 추가

* test: 예외 테스트에 대한 errorCode 검증 테스트 추가

* refactor: @nullsource, @EmptySource 따로 사용하는 애너테이션 @NullAndEmptySource로 변경

* [#189]Payment 서비스, 컨트롤러 슬라이싱 테스트 (#196)

* test: PaymentServiceTest 추가

* feat: 결제 정보 생성 요청 유효성 검증

* test: PaymentController 테스트 추가

* docs: payment api rest docs 추가

* test: 변경된 도네이션 로직 테스트 추가

* docs: 변경된 도네이션 예외사항 추가

* refactor: 프로필 업로드 method put으로 변경

* test: multipart 테스트 요청 메소드 put으로 변경

* refactor: paymentException 예외 결제 모듈 명시

* refactor: test code private 빠진 부분 추가

* refactor: 상수 변수명 대문자로 변경

* refactor: savedPayment 지역변수 제거

* refactor: thenReturn 개행

* fix: profile CORS 에러 multipart resolver 추가

* fix: profile CORS 에러 의존성 추가

* refactor: getCurationsMember 5 To 10 (#202)

* [#203]멤버 API 프로필 이미지 추가 (#204)

* feat: MemberResponse 및 CurationResponse profileImage 추가

* refactor: MemberDetailResponse 제거

* refactor: CloudFrontUrlGenerator 제거

* refactor: user profile s3 저장경로 변경

* fix: S3Connector 이슈 수정

* refactor: include aws profile

* fix: s3 경로 이슈 수정

* [#199, #198] 환불 API 작성, Payment의 Id 타입을 UUID로 변경 (#200)

* refactor: PaymentSaveResponse -> PaymentPendingResponse 네이밍 변경, PaymentPendingRequest dto 생성

* feat: Payment 환불 도메인 로직 작성

* feat: Payment 환불 컨트롤러,서비스 로직 작성

* feat: 환불API js코드예시 작성

* refactor: PaymentService#cancelPayment의 불필요한 로직 정리

* refactor: PaymentCancelRequest의 환불금액 필드 제거

* test: Payment 도메인 테스트 작성

* feat: Payment의 id 타입을 UUID로 변경

* feat: Payment 관련 DTO의 merchantUid 타입을 UUID로 변경, 더이상 사용되지 않는 DonationRequest 삭제

* fix: request dto에서 UUID를 받지 못하는 이슈 해결

* fix: PaymentNotFoundException 메시지/에러코드 수정, 사용되지 않는 PaymentRequestException,  PaymentCancelException 삭제

* refactor: IllegalPaymentInfoException 예외메시지 수정

* fix: 환불요청dto 유효성검사 실패시 PaymentCancelRequestException 발생하도록 변경

* test: Payment 컨트롤러 테스트케이스 추가

* refactor: convertToPaymentInfo 수정

* feat: Payment id타입 Long으로 변경, merchantUid UUID타입 컬럼 추가

* style: 리포매팅

* refactor: PaymentRequest -> PaymentCompleteRequest 리네임

* refactor: 사용되지 않는 클래스 제거

* refactor: 환불요청 dto의 merchantUid 타입 UUID로 변경

* feat: Payment의 merchantUid 컬럼 nullable=false 추가

* feat: UUID 커스텀 Validator 생성, DTO의 merchantUid를 String타입으로 변경

* refactor: 스네이크케이스 -> 카멜케이스로 변경

* feat: UUIDValidator null 검증 추가, 테스트작성

Co-authored-by: dwl5 <ssop6403@gmail.com>

* feat: member response에 bio 추가 (#208)

* fix: merchantId를 return 하게끔, 프로필 이미지 blank 체크하게끔

* refactor: UUID 생성 작업을 생성자로 넣음

* refactor: return 코드 변경

* refactor: cloudFront fileName splited

* refactor: cloudfront url 파싱

* refactor: cloud front url detached 메서드 분리

* feat: 운영에서 update 안되는 이슈로 인해 application-dev.yml 수정

* refactor: ddl-auto create mode

* refactor: 필드값 response에 맞게끔 변경

* refactor: ddl-auto 속성 변경

* feat: 후원 금액 validation 추가

* Release tyf server v1.1.0 (#209)

* server initial commit

* Delete server.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* [#7] 후원 요청 및 메시지 전송 API 구현 (#9)

* feat: 후원 요청 API 구현

* feat: 후원 요청 API 구현

* feat: 후원 메시지 전송 API 구현

* refactor: 불필요한 코드 삭제

* refactor: 불필요한 임포트 제거

* fix: 매핑 url messages 오타 수정

* refactor: 테스트 접근 제한자 private 적용

* fix : donations RequestMapping 수정

* refactor: @getter 추가 및 테스트 라이브러리 AssertJ로 변경

* [#12] 배너 생성 및 목록 조회 API 구현 (#12)

* Create README.md

* docs: README.md 개발 컨벤션 추가

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

* [#8] 배너 생성 및 목록 조회 API 구현 (#10)

* server initial commit

* Delete server.md

* feat: 기본 도메인 구현 Member, Donation, Banner (#6)

* feat: 에러 응답 DTO 생성

* feat: 배너 생성, 멤버의 배너 목록 조회 기능 구현

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* refactor: 리뷰 반영

* Revert "[#8] 배너 생성 및 목록 조회 API 구현 (#10)"

This reverts commit d31ffda.

Co-authored-by: hwano <jho2301@gmail.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>
Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#11] 도메인 createdDate 추가 (#13)

* feat: BaseTimeEntity 추가

* refactor: delete baseTimeEntityTest

* refactor: member repository 중복 제거

Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#15] JWT 토큰 관리와 인터셉터, ArgumentResolver 구현 (#17)

* feat: jwtTokenProvider 생성

* feat: ArguementsResolver, Interceptor 구현 및 Config 추가

* test: AuthenticationService 테스트 작성

* refactor: auth 관련 클래스 패키지 변경

* refactor: throws exception 구문 삭제

* refactor: 토큰 만료시간 테스트 추가 및 패키지 변경

* refactor: Authorization header 못찾을 시 예외 던지게 변경

Co-authored-by: rok93 <goodboy302@naver.com>

* [#16] OAuth2 로그인 및 회원가입 (#18)

* feat: OAuth2 카카오 로그인 구현

* feat: 구글, 카카오 oauth 연동

* feat: 로그인 데이터 properties로 분리

* feat: 회원가입 구현

* fix: oauth 로그인 안되는 현상 수정

* docs: 프로퍼티 파일 gitignore 추가

* remove properties

* refactor: ErrorResponse 생성자 제거

* refactor: oauth 기능 추상화

Co-authored-by: 김주원 <kjw11077@naver.com>

* [#34] OAuth2 로그인,회원가입 JWT 연동 (#36)

* refactor: oauth2 패키지 auth로 병합

* docs: oauth2 파일 gitignore 추가

* refactor: OAuth2 추상화 방식 변경

* refactor: Api 호출 로직 분리

* refactor: 회원가입 준비 api 구현

* refactor: readySignUp 메서드 분리

Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#37] 회원가입(멤버 생성) API (#39)

* refactor: oauth2 패키지 auth로 병합

* docs: oauth2 파일 gitignore 추가

* refactor: OAuth2 추상화 방식 변경

* refactor: Api 호출 로직 분리

* refactor: 회원가입 준비 api 구현

* refactor: readySignUp 메서드 분리

* feat: 회원가입 api 구현

Co-authored-by: dwl5 <ssop6403@gmail.com>

* fix: oauth2 jpa 테이블 명 수정 (#42)

* [#49] 랜딩페이지 주소, 닉네임 유효성 검사, 창작자 정보 요청, 창작자 포인트 조회 API (#53)

* feat: langdingPageUrl 유효성 검사 api 구현

* feat: nickName 유효성 검사 api 구현

* refactor: OAuth -> Oauth 네이밍 변경

* refactor: NickName -> Nickname 네이밍 변경

* refactor: 토큰 claim에 id 추가

* feat: 창작자 소유 포인트 조회 api 구현

* refactor: Donation 엔티티 isPublic 필드추가

* feat: Interceptor 패턴 지정

Co-authored-by: 김주원 <kjw11077@naver.com>

* docs: develop-server backend 크루 이름 추가 (#60)

* docs: backend 기술 스택 추가

* docs: 기술 스택 추가 (jenkins-test)

* docs: 기술 스택 추가 (jenkins-test)

* docs: 기술 스택 추가 (jenkins-test)

* [#54] 현재까지 구현한 API의 테스트 코드를 작성한다 (#61)

* refactor: urlName -> pageName 리네이밍

* refactor: Message VO로 캡슐화

* refactor: API /me 붙이는걸로 변경

* test: Donation 인수테스트, isPublic -> secret 리네임

* test: Banner 인수테스트 작성

* test: Member 인수테스트 작성, DonationServiceTest 오류수정

* test: 예외 테스트

* [#58] 후원 리스트 API 작성 (#65)

* refactor: 수정되지 않은 이전 필드명 수정

* feat: 공개 후원 리스트 조회 api 구현 및 테스트 코드 작성

* feat: donationRepository 메서드 추가 및 테스트

* feat: DonationService 메서드 내부로직 구현

* refactor: DonationController 내부 채우기

* refactor: 수리 코드 리뷰 피드백 반영

* feat: 후원 리스트 조회 인수테스트 생성

* refactor: Secret여부가 true인 후원만 가리게끔 수정

* refactor: service가 아닌 repository를 이용한 멤버 탐색

* refactor: DonationMessageRequest toEntity 메서드 생성

* [#55, #67] 예외 핸들링 구현 및 API 리팩토링 (#71)

* feat: BaseException 및 ControllerAdviceHandler 추가

* feat: /donations api 예외 로직 처리

* refactor: /donations request 필드 변경에 따른 로직 변경

* feat: /donations/{donationId}/messages api 예외 로직 처리

* feat: auth 관련 익셉션 추가

* feat: /banners api 예외 로직 처리

* feat: /members/validate/pageName api 에러 로직 처리

* feat: /members/validate/nickname api 에러 로직 처리

* refactor: @Valid 놓친 부분 달아줌

* refactor: 코드 정리, 간단한 리팩터링

* test: 후원 테스트 추가, 테스트 리팩터링

* feat: 멤버,OAuth2 예외 케이스 핸들링 구현

* refactor: 오타수정,리포맷팅

* feat: 인증 인터셉터 정책 추가

* refactor: @Valid 빠트린 곳 추가

* refactor: 공백한칸추가

* refactor: @ControllerAdvice -> @RestControllerAdvice 변경

* feat: SignUpRequestException 추가

* docs: TODO 추가

* refactor: 커스텀예외클래스의 ERROR_CODE 상수를 public으로 변경

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* [#63]Prod-Server의 설정파일을 생성 (#72)

* chore: jasypt 의존성 추가

* feat: JasyptConfig 추가

* chore: oauth2 설정파일 gitignore에서 제거

* feat: jasypt secret ket 외부에서 가져오도록 수정

* feat: properties 파일 분리 및 암호화

* refactor: 코드정리

* fix: include property 관련 에러 수정

* chore: mysql 의존성 추가

* refactor: encrytor config 생성 로직 분리

* refactor: @EnableEncryptableProperties 어노테이션 제거

* refactor: jashpyStringEncrytor 이름 정해주는 부분 제거

* feat: application-test 추가

* refactor: jasypt test환경에서 실행하지 않도록 수정

* [#77] 창작자가 자신의 정보를 조회하는 API를 작성한다. (#78)

* feat: 창작자 자신의 정보 조회 API 작성,테스트

* refactor: 오타수정,간단한 리팩터링

* refactor: MemberPrivateResponse -> MemberDetailResponse 리네임

* feat: cors 설정 추가 (#88)

* [#84] 후원금 순 큐레이션 리스트를 보여준다. (#85)

* feat: curation list api 구현

* refactor: CurationsResponse 필드에 pageName 추가

* [#83]로그인/회원 가입 리다이렉트 URL을 분리 (#86)

* feat: Oauth2 login, signup redirect url 분기

* feat: oauth2 요청 정보를 담는 DTO 생성

* feat: Oauth2InfoDto 반영

* refactor: Oauth2Info -> Oauth2Request로 이름 변경

* fix: kakao test secret id 추가

* refactor: login, readySignup 라인 분리

* feat: Dev-Server의 mock data 추가 기능 구현 (#93)

* refactor: memberRepositoryImplTest fix

* feat: 토큰 유효성 검증 API 구현,테스트 (#96)

* [#89]DB 서버 테이블 업데이트 (#100)

* chore: allowPublicKeyRetrieval 속성 추가

* chore: application.yml ddl-auto 속성 제거

* [#107] CORS 에러 수정 (#108)

* fix: intercepter prefilight 설정

* fix: cors addMapping 패턴 수정

* fix: oauth2 property type 대문자로 수정 (#110)

* [#92] repository, service, controller 슬라이싱 테스트 보강 (#101)

* refactor: Member, Point 도메인 테스트 추가

* feat: Domain, Message 도메인 테스트 추가

* feat: MemberServiceTest 작성

* feat: DonationServiceTest 추가 및 List<Donation> 필드 속성 변경

* refactor: MemberRepositoryTest 보완

* refactor: DonationRepositoryTest 변경

* refactor: Banner 패키징 변경

* feat: BannerServiceTest 작성

* refactor: AuthenticationService 슬라이싱 테스트로 변경

* refactor: @EnableJpaAuditing 선언 위치 변경

@WebMvcTest 시에 jpa 생성과 관련된 기능이 들어오지 않는데 main 함수가 속한 클래스 위에 있으면 이 떄문에 테스트 위에 추가적인 어노테이션이 계속해서 붙게된다. reference: https://1-7171771.tistory.com/136?category=981620

* refactor: cors mapping 선언 위치 변경

* feat: MemberController Test 작성

* feat: DonationControllerTest 작성

* feat: BannerControllerTest 작성

* refactor: 인수테스트 깨짐 원인 해결을 위한 디폴트 생성자 추가

* refactor: 에러코드 상수로 호출

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>

* refactor: 접근 제어자 빠진것 붙여주기

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>

* refactor: 에러코드 상수호출로 변경

* refactor: 정상적인 interceptor&resolver 모킹작업 메서드 분리

* refactor: conflict 처리

Co-authored-by: Gyeonglok Kim <goodboy302@naver.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>

* [#111] 후원 기록(전체 후원 리스트, 공개 후원 리스트)에 createdDate 정보 추가 (#112)

* refactor: 중복되는 cors 설정 제거

* fix: 통과하지 못하는 테스트 코드 수정 및 불필요한 import 제거

* feat: 후원 기록에 createdAt data 추가

후원 기록(전체 후원 리스트, 공개 후원 리스트)에 '생성일자' 정보를 추가한다.

* [#115]Logging 추가 (#116)

* chore: logback-slack 의존성 추가

* chore: logback 설정 추가

* feat: logging 적용 및 미정의 에러 처리 추가

* [#113] /members/validate/token 컨트롤러 테스트 코드 추가 및 repositoryTest @import 추가 (#119)

* refactor: import annotation added

* feat: TokenValidation Test 추가

* refactor: signup Redirect URL 변경 (#121)

* [#124]oauth2.0 리다이렉트 URL 추가  (#125)

* feat: prod 로그인 관련 리다이렉트 URL 추가

* feat: prod 회원 가입 관련 리다이렉트 URL 수정

* Delete index.html

* [#120, #128] Rest Docs 연동 및 후원자 이름 기본값 변경 (#126)

* refactor: RestDocs 설정 추가

* refactor: MemberControllerTest restDocs 코드 추가

* refactor: BannerControllerTest restDocs 코드 추가

* refactor: DonationControllerTest restDocs 코드 추가

* docs: index.adoc 생성

* refactor: enum toUpperCase 추가

* refactor: 테스트용 html 파일 삭제

* refactor: asciidoctor 버전 변경

* refactor: gradle 및 부트 버전 다운그레이드

* refactor: 후원 이름 default,secret name 변경

* refactor: restDocs를 위한 gradle 설정 변경

* refactor: logback console 나오도록 수정

Co-authored-by: dwl5 <ssop6403@gmail.com>

* chore: dev-server의 ddl-auto 설정을 update로 변경 (#138)

dev-server가 매번 배포될 때마다 데이터가 초기화되지 않도록 설정

* refactor: if문 하나 걸어줌 (#139)

* docs: update README.md

* feat: 프론트 배포 CORS 설정 (#142)

* feat: submodule added (#152)

* Delete application-oauth2-dev.yml

* feat: yamlController (#153)

* [#151] GitSubmodule 도입 (#154)

* refactor: jasypt 관련 삭제

* refactor: 암호화된 yml필드 삭제

* Update securityKey

* refactor: gradle copySecret task 변경

* feat: S3 연결

* 프로필 이미지 등록, 수정, 삭제 api 구현 (#157)

* refactor: S3 관련 클래스 패키지 구조 변경

* feat: profile 관련 Controller 메서드 및 Service 메서드 작성

* feat: CloudFronUrlGenerator 구현

* feat: S3 upload 코드 구현

* feat: profile image 삭제 기능 구현

* test: CloudFrontUrlGenerator 테스트 추가

* test: Upload ProfileImage Repository test 추가

* test: Upload ProfileImage Service test 추가

* feat: s3 스토리지에서 파일을 찾을 수 없는 예외 추가

* test: Upload ProfileImage Controller test 추가

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* feat: image profile upload/delete 기능 구현 (#158)

* feat: s3 파일 확장자 추가

* feat: S3 file not found exception 메시지 추가

* fix: db에 profile filename 만 저장하도록 수정

* test: upload profile 테스트 제거

* fix: if문 return 반영

* refactor: h2 console on

* refactor: web-allow-others 속성 변경

* refactor: 메세지 비공개 프로세스 변경 (#161)

* feat: s3 not found 케이스 테스트 추가 (#163)

* [#162]프로필 이미지 Api RestDocs 반영 (#167)

* feat: restdocs index.html config 추가

* feat: profile api restdocs 반영

* test: 테스트 코드 정리

* refactor: s3 파일 저장 경로 변경 (#169)

* refactor: 유효성 검사 변경 (#184)

* refactor: test fixed

* [#164]아임포트 결제 도메인, API 작성 (#188)

* feat: 아임포트 API 작성 중간커밋

* feat: 주문번호 생성하기 기능, 아엠포트 서버 액세스 토큰 발급 기능 및 결제정보 조회 기능

* refactor: Donation request 필드 변경

creator의 식별자 변경 (nickName -> pageName)

* feat: 결제 플로우 구현

* test: 결제 플로우 구현에 따른 테스트 변경

* refactor: dataloader payment 에러 수정

* test: DonationRepositoryTest 깨짐 수정

* feat: PaymentRequest 유효성 추가

* refactor: 결제 로직 리팩토링 (iamport 결제로직 분리)

* test: payment 도메인 테스트 추가

* refactor: IamPortPaymentServiceConnector @component추가

* refactor: donation service, acceptance 테스트 수정

* refactor: jwtTokenProviderTest ActiveProfile 설정 추가

* refactor: DataLoader dev만 적용되도록 수정

* refactor: 후원금액 총 합 payment의 값으로 더 해주도록 수정

* refactor: CloudFrontUrlGenerator ActiveProfile추가

* refactor: DonationService Payment Mock 추가

* refactor: 불필요한 import 삭제

* refactor: request url changed

* refactor: yml 파일 iamport 설정 추가 및 DonationService 이전으로 변경

* test: donation 인수테스트 disable 처리

* refactor: 간단한 리팩터링

* test: DonationControllerTest 테스트케이스 수정

* refactor: 도네이션 entity save로 리턴된 값 사용

* feat: Payment 예외 처리 추가

* refactor: PaymentInfo 변수 명 수정

* refactor: payment 정보 유효성 검사 메소드 분리

* refactor: paymentComplete 메소드 제거

* refactor: iamport DTO tostring 제거

* refactor: index.html 변경 사항 반영

Co-authored-by: 김주원 <kjw11077@naver.com>
Co-authored-by: rok93 <goodboy302@naver.com>
Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>

* refactor: test

* Update TyfServerApplication.java

* fix: 젠킨스 테스트

* Update TyfServerApplication.java

* Update TyfServerApplication.java

* Update TyfServerApplication.java (#192)

* Update TyfServerApplication.java (#194)

* Update TyfServerApplication.java

* [#191] 자기소개, 닉네임 변경 API 작성  (#197)

* feat: 자기소개(BIO) update API

* style: 불필요한 todo 주석 제거

* feat: 닉네임(NickName) update API

* refactor: 개행 형식 통일되도록 변경

* refactor: Nickname 변경 요청 DTO 수정

* refactor: 예외 error message 수정

* refactor: NickName이라고 표기법이 잘못된 표기 Nickname으로 변경

* test: 예외 테스트 케이스 추가

* test: 예외 테스트에 대한 errorCode 검증 테스트 추가

* refactor: @nullsource, @EmptySource 따로 사용하는 애너테이션 @NullAndEmptySource로 변경

* [#189]Payment 서비스, 컨트롤러 슬라이싱 테스트 (#196)

* test: PaymentServiceTest 추가

* feat: 결제 정보 생성 요청 유효성 검증

* test: PaymentController 테스트 추가

* docs: payment api rest docs 추가

* test: 변경된 도네이션 로직 테스트 추가

* docs: 변경된 도네이션 예외사항 추가

* refactor: 프로필 업로드 method put으로 변경

* test: multipart 테스트 요청 메소드 put으로 변경

* refactor: paymentException 예외 결제 모듈 명시

* refactor: test code private 빠진 부분 추가

* refactor: 상수 변수명 대문자로 변경

* refactor: savedPayment 지역변수 제거

* refactor: thenReturn 개행

* fix: profile CORS 에러 multipart resolver 추가

* fix: profile CORS 에러 의존성 추가

* refactor: getCurationsMember 5 To 10 (#202)

* [#203]멤버 API 프로필 이미지 추가 (#204)

* feat: MemberResponse 및 CurationResponse profileImage 추가

* refactor: MemberDetailResponse 제거

* refactor: CloudFrontUrlGenerator 제거

* refactor: user profile s3 저장경로 변경

* fix: S3Connector 이슈 수정

* refactor: include aws profile

* fix: s3 경로 이슈 수정

* [#199, #198] 환불 API 작성, Payment의 Id 타입을 UUID로 변경 (#200)

* refactor: PaymentSaveResponse -> PaymentPendingResponse 네이밍 변경, PaymentPendingRequest dto 생성

* feat: Payment 환불 도메인 로직 작성

* feat: Payment 환불 컨트롤러,서비스 로직 작성

* feat: 환불API js코드예시 작성

* refactor: PaymentService#cancelPayment의 불필요한 로직 정리

* refactor: PaymentCancelRequest의 환불금액 필드 제거

* test: Payment 도메인 테스트 작성

* feat: Payment의 id 타입을 UUID로 변경

* feat: Payment 관련 DTO의 merchantUid 타입을 UUID로 변경, 더이상 사용되지 않는 DonationRequest 삭제

* fix: request dto에서 UUID를 받지 못하는 이슈 해결

* fix: PaymentNotFoundException 메시지/에러코드 수정, 사용되지 않는 PaymentRequestException,  PaymentCancelException 삭제

* refactor: IllegalPaymentInfoException 예외메시지 수정

* fix: 환불요청dto 유효성검사 실패시 PaymentCancelRequestException 발생하도록 변경

* test: Payment 컨트롤러 테스트케이스 추가

* refactor: convertToPaymentInfo 수정

* feat: Payment id타입 Long으로 변경, merchantUid UUID타입 컬럼 추가

* style: 리포매팅

* refactor: PaymentRequest -> PaymentCompleteRequest 리네임

* refactor: 사용되지 않는 클래스 제거

* refactor: 환불요청 dto의 merchantUid 타입 UUID로 변경

* feat: Payment의 merchantUid 컬럼 nullable=false 추가

* feat: UUID 커스텀 Validator 생성, DTO의 merchantUid를 String타입으로 변경

* refactor: 스네이크케이스 -> 카멜케이스로 변경

* feat: UUIDValidator null 검증 추가, 테스트작성

Co-authored-by: dwl5 <ssop6403@gmail.com>

* feat: member response에 bio 추가 (#208)

* fix: merchantId를 return 하게끔, 프로필 이미지 blank 체크하게끔

* refactor: UUID 생성 작업을 생성자로 넣음

* refactor: return 코드 변경

* refactor: cloudFront fileName splited

* refactor: cloudfront url 파싱

* refactor: cloud front url detached 메서드 분리

* feat: 운영에서 update 안되는 이슈로 인해 application-dev.yml 수정

* refactor: ddl-auto create mode

* refactor: 필드값 response에 맞게끔 변경

* refactor: ddl-auto 속성 변경

* feat: 후원 금액 validation 추가

Co-authored-by: Bepoz <45073750+Be-poz@users.noreply.github.com>
Co-authored-by: 김주원 <kjw11077@naver.com>
Co-authored-by: hwano <jho2301@gmail.com>
Co-authored-by: rok93 <goodboy302@naver.com>

* feat: cors 및 interceptor path 추가

* chores: client 폴더 제거

* refactor: unused yml files deleted

* refactor: 사용하지 않는 request 삭제 및 네이밍 변경

* refactor: service Test 통합테스트로 변경

* refactor: DonationServiceTest 통합테스트로 변경

* refactor: Oauth2ServiceConnector로 역할 분리

* feat: Oauth2Service 테스트 추가

* feat: Oauth2Controller 테스트 추가

* feat: Oauth docs 추가

* feat: PaymentRepository Test 추가

* refactor: 개행추가

* refactor: AcceptanceTest 변경

* feat: AuthAcceptanceTest 추가

* refactor: AcceptanceTest 및 AuthAcceptanceTest 변경

* refactor: AcceptanceTest/AuthAcceptanceTest 변경사항

* refactor: MemberAcceptanceTest 변경

* feat: PaymentAcceptanceTest 추가

* refactor: DonationAcceptanceTest 변경

* refactor: BannerAcceptanceTest 삭제

* refactor: 인수테스트 형식 리팩토링

* refactor: 테스트 오류 수정

* refactor: 큐레이션 API 리팩토링

Co-authored-by: hwano <jho2301@gmail.com>
Co-authored-by: Chayan <hchayan196@gmail.com>
Co-authored-by: dwl5 <ssop6403@gmail.com>
Co-authored-by: 김주원 <kjw11077@naver.com>
Co-authored-by: rok93 <goodboy302@naver.com>
Co-authored-by: Chayan <chayans999@gmail.com>
  • Loading branch information
7 people committed Aug 5, 2021
1 parent 530b22f commit 42023fa
Show file tree
Hide file tree
Showing 30 changed files with 1,200 additions and 734 deletions.
29 changes: 27 additions & 2 deletions server/build.gradle
Expand Up @@ -3,6 +3,8 @@ plugins {
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'org.asciidoctor.convert' version '1.5.9.2'
id 'java'
//queryDsl
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

group = 'com.example'
Expand Down Expand Up @@ -47,10 +49,15 @@ dependencies {
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor'

implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-aws',
version : '2.2.1.RELEASE'
version: '2.2.1.RELEASE'

implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
implementation group: 'commons-io', name: 'commons-io', version: '2.6'

//static method mocking 가능하게해줌
testImplementation('org.mockito:mockito-inline:3.4.0')
//queryDsl
implementation 'com.querydsl:querydsl-jpa'
}

test {
Expand Down Expand Up @@ -79,4 +86,22 @@ processResources.dependsOn('copySecret')
task copySecret(type: Copy) {
from 'securityKey/application-dev-secret.yml', 'securityKey/application-prod-secret.yml'
into 'src/main/resources'
}
}

//queryDsl
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//queryDsl end
49 changes: 49 additions & 0 deletions server/src/docs/asciidoc/index.adoc
Expand Up @@ -209,6 +209,7 @@ include::{snippets}/createBannersHeaderNotFoundFailed/http-response.adoc[]
include::{snippets}/createBannersInvalidTokenFailed/http-request.adoc[]
==== Response
include::{snippets}/createBannersInvalidTokenFailed/http-response.adoc[]

== Donations (후원)
=== 후원 요청 - 성공
==== Request
Expand Down Expand Up @@ -290,6 +291,7 @@ include::{snippets}/publicDonations/http-response.adoc[]
include::{snippets}/publicDonationsMemberNotFoundFailed/http-request.adoc[]
==== Response
include::{snippets}/publicDonationsMemberNotFoundFailed/http-response.adoc[]

== Payment (결제)
=== 결제 요청 - 성공
==== Request
Expand All @@ -306,3 +308,50 @@ include::{snippets}/createPaymentMemberNotFoundFailed/http-response.adoc[]
include::{snippets}/createPaymentRequestFailed/http-request.adoc[]
==== Response
include::{snippets}/createPaymentRequestFailed/http-response.adoc[]

== Banners (배너)
=== Oauth를 이용한 로그인 - 성공
==== Request
include::{snippets}/login/http-request.adoc[]
==== Response
include::{snippets}/login/http-response.adoc[]
=== Oauth를 이용한 로그인 - 실패 - 등록되지 않은 회원임
==== Request
include::{snippets}/loginUnregisteredMemberFailed/http-request.adoc[]
==== Response
include::{snippets}/loginUnregisteredMemberFailed/http-response.adoc[]
=== 회원가입 준비 - 성공
==== Request
include::{snippets}/readySignUp/http-request.adoc[]
==== Response
include::{snippets}/readySignUp/http-response.adoc[]
=== 회원가입 준비 - 실패 - 해당 플랫폼으로 이미 가입되어있음
==== Request
include::{snippets}/readySignUpAlreadyRegisteredInSameOauth2TypeFailed/http-request.adoc[]
==== Response
include::{snippets}/readySignUpAlreadyRegisteredInSameOauth2TypeFailed/http-response.adoc[]
=== 회원가입 준비 - 실패 - 다른 플랫폼으로 이미 가입되어있음
==== Request
include::{snippets}/readySignUpAlreadyRegisteredFailed/http-request.adoc[]
==== Response
include::{snippets}/readySignUpAlreadyRegisteredFailed/http-response.adoc[]
=== 회원가입 준비 - 실패 - 적절하지 않은 Oauth 타입
==== Request
include::{snippets}/readySignUpInvalidOauth2TypeFailed/http-request.adoc[]
==== Response
include::{snippets}/readySignUpInvalidOauth2TypeFailed/http-response.adoc[]
=== 회원가입 - 성공
==== Request
include::{snippets}/signUp/http-request.adoc[]
==== Response
include::{snippets}/signUp/http-response.adoc[]
=== 회원가입 - 실패 - 유효하지 않은 Request
==== Request
include::{snippets}/signUpRequestFailed/http-request.adoc[]
==== Response
include::{snippets}/signUpRequestFailed/http-response.adoc[]
=== 회원가입 - 실패 - 적절하지 않은 Oauth 타입
==== Request
include::{snippets}/signUpInvalidOauth2TypeFailed/http-request.adoc[]
==== Response
include::{snippets}/signUpInvalidOauth2TypeFailed/http-response.adoc[]
@@ -1,8 +1,11 @@
package com.example.tyfserver.auth.dto;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class TokenResponse {

private String token;
Expand Down
@@ -1,40 +1,30 @@
package com.example.tyfserver.auth.service;

import com.example.tyfserver.auth.domain.Oauth2;
import com.example.tyfserver.auth.domain.Oauth2Type;
import com.example.tyfserver.auth.dto.Oauth2Request;
import com.example.tyfserver.auth.dto.SignUpResponse;
import com.example.tyfserver.auth.dto.TokenResponse;
import com.example.tyfserver.auth.exception.AlreadyRegisteredException;
import com.example.tyfserver.auth.exception.AlreadyRegisteredInSameOauth2TypeException;
import com.example.tyfserver.auth.exception.UnregisteredMemberException;
import com.example.tyfserver.common.util.ApiSender;
import com.example.tyfserver.auth.util.Oauth2ServiceConnector;
import com.example.tyfserver.member.domain.Member;
import com.example.tyfserver.member.dto.SignUpReadyResponse;
import com.example.tyfserver.member.dto.SignUpRequest;
import com.example.tyfserver.member.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import org.json.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import java.nio.charset.StandardCharsets;
import java.util.Collections;

@Service
@RequiredArgsConstructor
public class Oauth2Service {

private final MemberRepository memberRepository;
private final AuthenticationService authenticationService;
private final Oauth2ServiceConnector oauth2ServiceConnector;

public TokenResponse login(final Oauth2Request oauth2Request, final String code) {
final String email = getEmailFromOauth2(oauth2Request, code);
final String email = oauth2ServiceConnector.getEmailFromOauth2(oauth2Request, code);

Member findMember = memberRepository.findByEmailAndOauth2Type(email, Oauth2Type.findOauth2Type(oauth2Request.getType()))
.orElseThrow(UnregisteredMemberException::new);
Expand All @@ -43,7 +33,7 @@ public TokenResponse login(final Oauth2Request oauth2Request, final String code)
}

public SignUpReadyResponse readySignUp(final Oauth2Request oauth2Request, final String code) {
final String email = getEmailFromOauth2(oauth2Request, code);
final String email = oauth2ServiceConnector.getEmailFromOauth2(oauth2Request, code);

memberRepository.findByEmail(email)
.ifPresent(member -> validateRegisteredMember(oauth2Request.getType(), member));
Expand All @@ -53,35 +43,9 @@ public SignUpReadyResponse readySignUp(final Oauth2Request oauth2Request, final

public SignUpResponse signUp(SignUpRequest signUpRequest) {
Member member = signUpRequest.toMember();
Member persistMember = memberRepository.save(member);

return new SignUpResponse(authenticationService.createToken(persistMember), persistMember.getPageName());
}

private String getEmailFromOauth2(Oauth2Request oauth2Request, String code) {
final String accessToken = requestAccessToken(code, oauth2Request);
return requestEmail(accessToken, oauth2Request);
}
Member savedMember = memberRepository.save(member);

private String requestAccessToken(String code, Oauth2Request oauth2Request) {
String body = ApiSender.send(
oauth2Request.getAccessTokenApi(),
HttpMethod.POST,
generateAccessTokenRequest(code, oauth2Request)
);

return extractAccessToken(body);
}

private String requestEmail(String accessToken, Oauth2Request oauth2Request) {
String body = ApiSender.send(
oauth2Request.getProfileApi(),
HttpMethod.GET,
generateProfileRequest(accessToken)
);

Oauth2 oauth2 = Oauth2Type.findOauth2(oauth2Request.getType());
return extractEmail(oauth2, body);
return new SignUpResponse(authenticationService.createToken(savedMember), savedMember.getPageName());
}

private void validateRegisteredMember(String oauthType, Member member) {
Expand All @@ -90,40 +54,4 @@ private void validateRegisteredMember(String oauthType, Member member) {
}
throw new AlreadyRegisteredException(member.getOauth2Type().name());
}

private HttpEntity<MultiValueMap<String, String>> generateAccessTokenRequest(String code, Oauth2Request oauth2Request) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAcceptCharset(Collections.singletonList(StandardCharsets.UTF_8));

MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("grant_type", "authorization_code");
params.add("client_id", oauth2Request.getClientId());
params.add("redirect_uri", oauth2Request.getRedirectUrl());
params.add("code", code);
params.add("client_secret", oauth2Request.getClientSecret());

return new HttpEntity<>(params, headers);
}

private HttpEntity<MultiValueMap<String, String>> generateProfileRequest(String accessToken) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAcceptCharset(Collections.singletonList(StandardCharsets.UTF_8));

headers.setBearerAuth(accessToken);
return new HttpEntity<>(headers);
}

private String extractEmail(Oauth2 oauth2, String response) {
// todo OAuth2 에서 발생한 예외 잡기
final JSONObject jsonObject = new JSONObject(response);
return oauth2.extractEmail(jsonObject);
}

private String extractAccessToken(String body) {
// todo OAuth2 에서 발생한 예외 잡기
final JSONObject jsonObject = new JSONObject(body);
return jsonObject.getString("access_token");
}
}
@@ -0,0 +1,82 @@
package com.example.tyfserver.auth.util;

import com.example.tyfserver.auth.domain.Oauth2;
import com.example.tyfserver.auth.domain.Oauth2Type;
import com.example.tyfserver.auth.dto.Oauth2Request;
import com.example.tyfserver.common.util.ApiSender;
import org.json.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import java.nio.charset.StandardCharsets;
import java.util.Collections;

@Component
public class Oauth2ServiceConnector {

public String getEmailFromOauth2(Oauth2Request oauth2Request, String code) {
final String accessToken = requestAccessToken(code, oauth2Request);
return requestEmail(accessToken, oauth2Request);
}

private String requestAccessToken(String code, Oauth2Request oauth2Request) {
String body = ApiSender.send(
oauth2Request.getAccessTokenApi(),
HttpMethod.POST,
generateAccessTokenRequest(code, oauth2Request)
);

return extractAccessToken(body);
}

private String requestEmail(String accessToken, Oauth2Request oauth2Request) {
String body = ApiSender.send(
oauth2Request.getProfileApi(),
HttpMethod.GET,
generateProfileRequest(accessToken)
);

Oauth2 oauth2 = Oauth2Type.findOauth2(oauth2Request.getType());
return extractEmail(oauth2, body);
}


private HttpEntity<MultiValueMap<String, String>> generateAccessTokenRequest(String code, Oauth2Request oauth2Request) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAcceptCharset(Collections.singletonList(StandardCharsets.UTF_8));

MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("grant_type", "authorization_code");
params.add("client_id", oauth2Request.getClientId());
params.add("redirect_uri", oauth2Request.getRedirectUrl());
params.add("code", code);
params.add("client_secret", oauth2Request.getClientSecret());

return new HttpEntity<>(params, headers);
}

private HttpEntity<MultiValueMap<String, String>> generateProfileRequest(String accessToken) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAcceptCharset(Collections.singletonList(StandardCharsets.UTF_8));

headers.setBearerAuth(accessToken);
return new HttpEntity<>(headers);
}

private String extractEmail(Oauth2 oauth2, String response) {
final JSONObject jsonObject = new JSONObject(response);
return oauth2.extractEmail(jsonObject);
}

private String extractAccessToken(String body) {
final JSONObject jsonObject = new JSONObject(body);
return jsonObject.getString("access_token");
}
}
Expand Up @@ -26,7 +26,7 @@ public class MemberController {
private final AuthenticationService authenticationService;

@PostMapping("/validate/pageName")
public ResponseEntity<Void> validatePageName(@Valid @RequestBody PageNameValidationRequest request,
public ResponseEntity<Void> validatePageName(@Valid @RequestBody PageNameRequest request,
BindingResult result) {
if (result.hasErrors()) {
throw new PageNameValidationRequestException();
Expand Down
@@ -1,5 +1,8 @@
package com.example.tyfserver.member.dto;

import com.querydsl.core.annotations.QueryProjection;
import com.querydsl.core.types.dsl.NumberExpression;
import com.querydsl.core.types.dsl.StringPath;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -14,6 +17,7 @@ public class CurationsResponse {
private String profileImage;
private String bio;

@QueryProjection
public CurationsResponse(String nickname, Long donationAmount, String pageName, String profileImage, String bio) {
this.nickname = nickname;
this.donationAmount = donationAmount;
Expand Down

This file was deleted.

0 comments on commit 42023fa

Please sign in to comment.