Skip to content

Commit

Permalink
v1.0.0 (#182)
Browse files Browse the repository at this point in the history
* chore: 프로젝트 세팅 (#2)

* chore: .editorconfig 추가

* chore: codeowners 추가

* docs: 이슈 템플릿 추가

* docs: PR 템플릿 추가

* refactor: 대소문자 수정

* refactor: class명 대소문자 수정

* test: health check

* docs: PR 템플릿 수정

* chore: checkstyle plugin 적용

* chore: develop Branch Pull Request Workflow 적용

* chore: application.properties를 .yml로 변경

---------

Co-authored-by: uwoobeat <[email protected]>
Co-authored-by: ybchar <[email protected]>

* chore: gradle build action 및 lifecycle 추가 (#4)

* refactor: gradle build action 및 lifecycle 추가

* refactor: build.gradle test 의존성 삭제

* chore: CI/CD 워크플로우 생성 (#18)

* chore: Dockerfile 생성

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* chore: plain jar 생성 안되도록 설정

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* chore: CI/CD workflow 작성

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* fix: cicd전용 계정 생성하여 password 필드 제거

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

---------

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* fix: CI/CD 접속 전용 계정 적용 (#21)

* fix: ssh 접속 계정명 변경과 패스워드 필드 제거

* fix: docker 명령어에 registry 값 추가

* fix: CI/CD outputs 변수명 변경 (#23)

* fix: CI/CD outputs 변수명 변경

* remove: on pullrequest 제거

* feat: 커스텀 예외 및 에러 코드/응답 구현  (#19)

* feat: 에러 코드 구현

* feat: 커스텀 예외 구현

* feat: 예외 응답 구현

* chore: 스프링부트 액추에이터 설정 (#29)

* fix: 테스트 파일 이름 수정

* chore: 액추에이터 의존성 추가

* chore: 액추에이터 보안 관련 설정

* chore: Swagger 설정 (#26)

* chore: Swagger 기본 설정

* chore: Swagger 객체 파싱 직렬화

* chore: swagger Server url 추가

* refactor: 코드 포메팅 도구 CheckStyle을 Spotless로 변경한다 (#25)

* remove: checkstyle 제거

* chore: spotless 플러그인 추가하고 설정

* style: spotless

* chore: git pre-commit spotless check script 생성

* style: 주석 추가

* style: spotless

* style: spotless

* fix: pre-commit script 파일 생성, gradle copy task 생성

* style: 주석 제거

* chore: jacoco 기본 세팅 (#28)

* chore: jacoco 기본 설정

* chore: jacoco 커버리지 임시 주석

* chore: jacoco excludes constant화 및 buildDir 수정

* chore: checkstyle remove

* chore: docker compose 적용 (#31)

* chore: 워크플로 테스트 트리거 추가

* chore: 서버로 컴포즈 파일을 전송하는 스텝 추가

* chore: 빌드 시 자바 이미지 eclipse-temurin으로 변경

* chore: 컴포즈 파일 작성

* chore: 컴포즈 파일에 사용할 환경변수 설정

* chore: 시크릿을 사용하도록 변경

* fix: 권한 문제 수정

* chore: 도커 컴포즈를 실행하도록 변경

* fix: scp action의 버전을 고정하도록 변경

* fix: 오타 수정

* fix: 유저네임 변경

* fix: 쉘에서 환경변수 전달하도록 수정

* fix: 사용할 환경변수 지정

* chore: 도커 미사용 리소스 삭제 명령어 추가

* fix: 이미지만 삭제하도록 수정

* fix: 환경변수 수정

* chore: 호스트 모드 사용 시 포트 바인딩 옵션 제거

* chore: 컴포즈가 전역 컨텍스트의 환경변수를 직접 참조하도록 수정 테스트

* fix: 주석 수정

* Revert "fix: 주석 수정"

This reverts commit 0e8f426.

* Revert "chore: 컴포즈가 전역 컨텍스트의 환경변수를 직접 참조하도록 수정 테스트"

This reverts commit b910404.

* docs: 주석 추가

* chore: 주석 처리한 명령어 제거

* chore: 워크플로 테스트 트리거 롤백

* chore: 배포 전용 워크플로에 변경사항 적용

* chore: 프로젝트 패키지 구성 (#30)

* chore: 프로젝트 패키지 구성

* rename: 패키지명 오타 수정

* rename: repository -> dao로 패키지명 변경

* chore: 성공 응답 공통 처리 어드바이스 생성 (#34)

* chore: 성공 응답 공통 처리 어드바이스 생성

* remove: Getter 제거

* chore: Gradle Build Scan 활성화 및 슬랙 전송 워크플로 추가 (#37)

* chore: 빌드 스캔 활성화

* chore: 워크플로 테스트

* chore: CI 환경변수 테스트 제거

* chore: 슬랙 전송 워크플로 작성

* chore: 슬랙 전송 스텝을 빌드 잡으로 통합

* chore: 테스트 트리거 및 문자열 제거

* chore: 프로젝트에 PR 추가 후 status를 '처리대기'로 변경하는 워크플로우 추가 (#6)

* chore: PR 추가 후 status를 변경하는 워크플로우 추가

* fix: 스크립트 줄바꿈 제거

* chore: 이슈 및 PR 템플릿 수정 (#42)

* style: 개행 제거

* docs: PR 템플릿 수정

* style: 개행 제거

* chore: sonarcloud setting (#38)

* chore: lifeCycle remove 1

* chore: Sonar test

* chore: PR close 시 merged 라벨 추가 및 기존 워크플로 픽스 (#43)

* chore: 워크플로 이름 수정

* refactor: 파일명 변경

* chore: PR이 closed 될 때 merged 라벨 추가하는 워크플로 작성

* chore: 테스트용 트리거 추가

* chore: 권한 설정 변경

* chore: 테스트 트리거 재설정

* chore: 테스트 트리거 롤백

* chore: 프로젝트 워크플로 테스트 트리거 활성화

* �chore: 코드 정적 분석 SonarCloud 설정 (#38)

* �chore: 코드 정적 분석 SonarCloud 설정 (#38)

* chore: pending 워크플로우의 쿼리 수정

* fix: pending 상태 id 값 직접 삽입

* fix: 쿼리 전 인자값을 미리 선언하도록 지정

* chore: 테스트 트리거 롤백

* chore: 잡 이름 변경

* chore: 워크플로 이름 변경

---------

Co-authored-by: yb__char <[email protected]>
Co-authored-by: ybchar <[email protected]>

* feat: BaseTimeEntity 생성 (#49)

* feat: BaseTimeEntity 생성

* feat: jacoco exclusions 수정

* feat: jacoco QType exclusions 추가

* feat: BaseTime exclusions Test

* feat: Entity exclusions Test

* chore: 워크플로에서 `set-output` 커맨드 제거 (#47)

* chore: 테스트 트리거 활성화

* chore: set-output 대신 github env를 사용하도록 개선

* chore: 환경변수 이름 변경

* chore: 테스트 명령어 추가

* chore: 환경변수 출력 테스트

* chore: 환경변수를 전역 컨텍스트로 선언

* chore: 전역 환경변수가 미리 평가되도록 변경

* chore: 환경변수를 잡의 아웃풋으로 전달하도록 수정

* fix: 신택스 오류 수정

* fix: 같은 잡 내에서는 스텝 아웃풋 사용하도록 수정

* chore: NCP 유저네임 시크릿 처리

* chore: 테스트 스크립트 제거

* chore: 테스트 트리거 롤백

* chore: NCP 유저네임 시크릿 처리

* fix: error 패키지 sonarcloud 테스트 제외 (#58)

* fix: error 패키지 sonarcloud 테스트 제외

* fix: lombok.config로 lombok annotation scope exclusions

* fix: Error 파일명 sonarcloud 테스트 제외

* fix: config 경로 sonarcloud 테스트 제외

* feat: 회원 도메인 및 시큐리티 유틸리티 구현 (#56)

* refactor: 도메인 이름을 user에서 member로 변경

* feat: 회원 도메인 구현

* test: 회원 테스트 작성

* refactor: `.gitkeep` 삭제

* chore: 시큐리티 의존성 추가

* feat: 시큐리티 설정 추가

* fix: 전역 응답객체와 호환되기 위해 String에서 임시 응답객체로 변경

* feat: 멤버 레포지터리 추가

* feat: 임시 UserDetail 추가

* refactor: 시큐리티 패키지로 이동

* feat: PrincipalDetails 구현

* fix: 에러코드 생성자 수정

* feat: 멤버 레포지터리 추가

* style: 포매팅 적용

* feat: 시큐리티 유틸리티 구현

* feat: 멤버 유틸리티 구현

* refactor: gitkeep 삭제

* feat: 에러코드 추가

* fix: 미수정 코드 제거

* test: 멤버 유틸리티 테스트 추가

* style: 포매팅 적용

* fix: 오타 수정

* test: 임시 회원 삽입 테스트

* style: 포매팅 수정

* refactor: gitkeep 삭제

* refactor: 빌더를 사용하도록 변경

* fix: 빌더 접근제어 설정 추가

* refactor: 기본 생성자 접근제어 수정

* docs: TODO 추가

* style: 포매팅 수정

* docs: 주석 수정

* feat: SpringEnvironmentHelper 생성 (#45)

* feat: SpringEnvironmentHelper 생성

* test: SpringEnvironmentHelper 테스트코드 추가

* rename: Util로 클래스명 변경

* fix: 문자열 상수 public static으로 변경

* refactor: SpringEnvironmentUtil 로직 Stream으로 개선

* style: spotless

* refactor: 운영환경에 따라 허용되는 도메인 달라지도록 개선

* fix: 문자열 상수 public static final로 변경

* test: DisplayName 어노테이션 제거

* fix: cors origin pattern vite port 삭제

* refactor: SpringEnvironmentUtilTest 문자열 배열 상수로 관리

* style: spotless

* refactor: WebSecurityConfig에 RequiredArgsConstructor 어노테이션 사용

* style: spotless

* fix: GlobalResponseAdvice 응답 값이 String 타입 예외 처리 (#59)

* fix: Swagger가 안뜨는 문제 해결 (#68)

* feat: Querydsl 환경 구성 추가 (#64)

* feat: querydsl 환경

* feat: Member Profile record compile 이슈로 class로 변경

* fix: spotlessApply

* fix: Profile NoArgsConstructor Access Level remove

* feat: build.gradle Querydsl 설정

* fix: DS_Stroe -> DS_Store 수정

* fix: Querydsl 설정 삭제

* fix: ignore main/generated 경로 추가

* feat: 미션, 미션 기록 도메인 생성 (#60)

* feat: mission domain 추가

* feat: mission repository 추가 및 spotless 적용

* feat: missionRecord domain 추가

* feat: mission DomainTest 작성

* fix: Mission DomainTest 수정

* fix: Comment Annotation 활용 및 Spotless Apply

* fix: Spotless Apply

* fix: sonar --no-daemon test

* fix: mission 도메인 수정 반영

* fix: spotlessApply

* feat: MissionVisibility 값 추가

* fix: spotlessApply

* fix: 도메인 테스트 MissionVisibility 수정

* feat: Mission Sort 값 파라미터 전달로 수정

* feat: Mission Sort 값 파라미터 전달로 수정

* fix: spotlessApply

* feat: service gitkeep

* feat: sonar New Code Test

* feat: sonar New Code Test

* feat: sonar New Code Test

* feat: sonar New Code Test

* feat: sonar BuildDir test

* fix: set_pending 주석

* fix: set_pending 주석 해제

* fix: sonar down

* fix: sonar up

* fix: sonar down

* fix: sonar up

* fix: set-pending test

* feat: mission Domain 추가 사항 적용

* feat: 미션, 미션 기록 수정사항 반영

* feat: 미션, 미션 기록 column 수정

* fix: spotlessApply

* fix: mission 도메인 column 수정 반영

* fix: spotlessApply

* fix: mission 도메인 column 수정 반영

* fix: 엔티티 column 순서 변경

* fix: mission content nullable true

* chore: Global Exception Handler 설정 (#63)

* chore: Global Exception Handler 설정

* fix: Override 추가와 BindException 제거

* style: spotless

* style: 주석제거

* chore: 공통 상수 Enum으로 관리 (#71)

* chore: 공통 상수 enum 생성

* refactor: 공통 상수 값 사용하도록 변경

* refactor: 공통 상수 관심사에 맞도록 분리

* chore: `application.yml` 환경별 분리 (#72)

* chore: application yml 환경별로 분리

* chore: datasource MySQL 방언 제거

* style: spotless

* style: spotless

* remove: actuator 환경변수 제거

* feat: 파일에 env_file 사용하도록 명시

* chore: develop_deploy.yml 에서 커밋해쉬 사용하도록 수정 (#79)

chore: develop deploy actions에서 커밋해쉬 사용하도록 수정

* chore: develop_deploy.yml needs 삭제 (#81)

chore: develop deploy actions에서 사용하지 않는 needs 제거

* fix: Swagger에 Server 리스트 안보이는 문제해결 (#70)

* fix: Swagger에 Server 리스트 안보이는 문제해결

* style: spotless

* refactor: SpringEnvironmentUtil 사용하는 부분 공통상수 처리

* feat: 테스트 코드 격리 (#84)

* feat: 테스트 코드 격리

* fix: 중복 gradle 수정

* fix: guava 의존성 해제

* fix: guava 원복

* fix: DatabaseCleaner Service -> Component

* fix: unwrap 이슈로 해결 및 guava 의존성 해제

* feat: Swagger 접근 거부 문제와 스웨거 보안 기능 추가 (#82)

* feat: SwaggerUrl 상수 추가

* feat: Swagger 접근 거부 문제와 스웨거 보안 기능 추가

* refactor: Swagger 문서 GET만 허용

* style: spotless

* feat: 미션 서비스 로직 구현 (1차) (#77)

* feat: 미션 생성, 리스트 조회 로직 구현

* feat: 미션 단건 조회, 수정, 삭제 1차 구현

* feat: Controller 인터페이스 분리

* feat: 미션 서비스 테스트 코드 생성, 조회 구현

* feat: 미션 리스트 lastId where 조건 추가

* fix: spotlessApply

* fix: 미션 서비스 테스트 수정

* fix: h2 option remove

* fix: 미션 리스트 수정

* feat: 미션 수정, 삭제 서비스 테스트 코드 작성

* fix: 미션 response Dto 수정

* feat: 미션 read response 수정 및 SecurityUtil 삭제

* fix: spotlessApply

* fix: Dto class -> record 변경

* feat: Slf4j 삭제

* fix: spotlessApply

* fix: lombok gradle 수정

* fix: 미션 생성 실패 검증 exception 수정

* fix: MissionController 수정사항 반영

* feat: MissionService Test DatabaseCleaner 추가

* fix: spotlessApply

* fix: 메서드 네이밍 변경 및 missionFindAll 파라미터 변경

* fix: serviceTestCode 메서드 네이밍 변경

* chore: MissionResponse -> MissionFindRepsonse

* chore: MissionRequest DTO 네이밍 변경

* chore: MissionRequest DTO defaultValue 추가

* fix: spotlessApply

* feat: 미션 service Nagative Test 코드 추가

* feat: 미션 삭제 실패 case 수정

* fix: missionController api 패키지로 변경

* fix: missionController api 패키지로 변경

* fix: Request Dto defaultValue 수정

* fix: createMissionService member 변수 분리

* fix: CustomException으로 변경

* fix: requestBody 추가

* fix: member 변수 분리

* fix: spotlessApply

* fix: serviceTest null exception 수정

* feat: 미션 생성 수정 responseDTO 추가 및 수정

* feat: 미션 조회 인증 필요 status 필드 추가

* feat: 미션 enum 타입 재정의

* fix: spotlessApply

* fix: modify -> update 메서드 명 변경

* fix: createMissionService member 변수 분리 수정

* chore: 미션 service 테스트 코드 메서드 명 수정

* fix: 미션 생성 201 응답 변경

* fix: 미션 리스트 조회 RequestParam size로 수정

* fix: 미션 리스트 조회 테스트 코드 RequestParam size로 수정

* refactor: 리뷰 반영

* fix: spotlessApply

* feat: Repository 테스트 코드 추가

* fix: ResponseDto from 정적 팩토리 메서드 추가

* feat: TestQuerydslConfig 추가 및 Repository 테스트 수정

* fix: ArchiveStatus REQUIRED 삭제

* fix: createMission Service return/response 분리

* fix: 정적 팩토리 메서드 수정

* fix: WebEnvironment default로 수정

* fix: MemberUtilTest에 DatabaseCleaner 적용 (#90)

* fix: MemberUtilTest에 DatabaseCleaner 적용

* style: spotless

* chore: Redis 설정 (#88)

* chore: starter-data-redis 의존성 추가

* chore: redis config 추가

* chore: redis.yml 생성

* fix: redis yml deprecated 되어 config Value값 변경

* test: ActiveProfiles test 값 추가

* test: test yml에 redis 정보 추가

* chore: test를 위한 docker-compose-test.yml 생성

* chore: github actions 빌드 시 test redis 사용

* remove: .gitkpeep 삭제

* fix: build시 docker-compose-test.yml 사용하도록 변경

* chore: SecurityConfig 임시로 모든 url 허용 (#94)

chore: securityConfig 임시로 모든 url 허용

* feat: 미션 기록 저장 기능 구현 (#97)

* chore: validation 의존성 추가

* feat: 미션 기록 저장 기능 구현

* test: MissionRecordTest 작성

* feat: duration 한시간 초과시 한시간으로 변환

* test: MissionRecordTest Nested 사용

* refactor: 코드 리뷰 반영

* style: spotless

* test: 사용하지 않는 테스트 삭제

* chore: NCP Object Storage 설정 (#100)

* move: redis config 패키지 이동

* chore: PropertiesConfig 추가와 configuration-processor 의존성 추가

* chore: AWS 의존성 추가

* chore: Storage Config 생성

* chore: storage.yml 추가

* refactor: RedisProperties 적용

* style: spotless

* refactor: properties record 적용

* fix: 개발서버 CORS 관련 오류 해결 (#105)

fix: cors 활성화

* chore: Swagger Tag 값에 Numbering (#111)

chore: Swagger API 제목 Numbering

* test: 미션 Controller 테스트 코드 작성 (#103)

* feat: MissionController Test 세팅

* feat: 공부 미션 생성

* feat: WebMvcTest로 변경 후 given을 사용한 조회 테스트 구현

* fix: ResultActions 분리

* refactor: 미션 slice 응답 분리

* refactor: lastId 분리

* feat: 미션 수정 controller 테스트 코드 구현

* feat: 미션 삭제 controller 테스트 코드 구현

* feat: 미션 생성 이름 Null 케이스 추가

* feat: 미션 수정 controller 실패 테스트 코드 구현

* fix: spotlessApply

* fix: ArgumentMatchers static import

* fix: 미션 삭제 not found Exception

* fix: spotlessApply

* feat: 미션 내역 리스트 조회 (#107)

* feat: 미션 기록 조회

* fix: findByMissionId -> findById로 변경

* fix: spotlessApply

* fix: validateYearMonthFormat 검증 수정

* fix: spotlessApply

* fix: remart -> remark 오타 수정

* fix: RequestParam String -> YearMonth로 변경

* refactor: yearMonth 조건 분리

* fix: missionRecordId -> recordId 변경

* chore: git pending test

* feat: 미션 내역 상세 조회 구현 (#115)

* feat: 미션 내역 상세 조회

* fix: duration toMinutes로 변경

* fix: description 수정

* fix: MISSION_RECORD_USER_MISMATCH statusCode 400 -> 403

* feat: PresignedUrl을 사용하여 이미지 업로드 기능 구현 (#106)

* chore: endpoint 값 추가하여 config 수정

* feat: 미션 기록 이미지 Presigned URL 생성

* feat: 미션 기록 이미지 업로드 완료 처리

* chore: storage.yml에 endpoint 환경변수 추가

* test: Test 코드 추가

* style: spotless

* refactor: storage 저장 디렉토리 변경

* feat: MissionRecord 도메인 uploadStatus validation 예외처리

* refactor: 해당 미션이 접속한 유저와 일치하지 않을때 예외 발생추가

* style: spotless

* test: test코드 추가와 예외처리 변경

* style: spotless

* remove: 사용하지 않는 에러 제거

* style: ImageController Swagger Tag 넘버링

* refactor: ImageController RequestMapping 제거

* refactor: Transactional 클래스레벨로 추출

* style: spotless

* test: ImageController RequestMapping 제거 후 테스트코드 수정

* remove: .gitkeep 삭제

* refactor: 메소드 네이밍 변경

* refactor: MISSION_RECORD_USER_MISMATCH Service 레이어로 추출

* style: conflict 해결

* style: spotless

* chore: 공통 응답 포멧 통일 (#116)

* chore: config 패키지와 response 패키지 이동

* chore: 공통포멧 응답 통일

* remove: health-check API 제거 (actuator로 대체)

* refactor: MethodArgumentNotValidException 예외 메세지 변경

* test: 공통 응답 포멧 변경으로 테스트 코드 수정

* refactor: fail 메서드에 ErrorResponse만 받도록 변경

* style: spotless

* test: 공통 응답 변경으로 인한 ImageControllerTest 변경

* style: spotless

* feat: 미션 인증 및 완료 사진 업로드 단계 예외케이스 처리 (#114)

* chore: RedisConfig에 RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP 설정 추가

* feat: MissionRecordTTl, Repository 클래스 생성

* chore: RedisExpireEvent 상수 생성

* feat: RedisExpireEventRedisMessageListener 생성

* chore: RedisMessageListenerConfig 생성

* feat: 미션 일지 생성 후 Redis에 TTL 저장

* fix: TTL 10분으로 설정

* style: spotless

* refactor: EXPIRATION_TIME 상수 적용과 ttl 변수명 변경

* �fix: Redis Expire Event 수신 안되어 docker-compose Redis 사용 (#128)

* feat: docker-compose.yml에 redis 추가

* style: spotless

* refactor: 미션 기록 생성 응답 값 response 객체로 Wrapping (#132)

* refactor: MissionRecordCreateResponse 생성

* refactor: 미션 기록 생성 응답 값 response 객체로 Wrapping

* test: MissionRecordCreateResponse로 응답되도록 테스트 수정

* hotfix: CORS AllowedOrigins 환경 분리 (#136)

* hotfix: CORS AllowedOrigins 환경 분리

* hotfix: CORS AllowedOrigins url 범위 변경

* hotfix: CORS문제로 UrlConstants에 www 추가 (#138)

hotfix: UrlConstants에 www 추가

* feat: 이미지 업로드 예외케이스에서 업로드 완료시 Redis TTL 삭제 기능 (#131)

* feat: 미션 내역 수정 구현 (#123)

* fix: 미션 기록 일지 수정

* fix: spotlessApply

* feat: 미션 기록 소유권 검증

* fix: 미션, 미션 기록 수정 API return 객체 정적 팩토리 메서드로 변경

* fix: updateMissionRecord 인자 변경

* fix: MissionVisibility 검증 부분 수정

* fix: spotlessApply

* fix: spotlessApply

* fix: update return 타입 변경 및 변수 할당

* fix: 미션 수정도 동일한 response 형식

* fix: 수정 API 변경으로 인한 테스트 코드 수정

* fix: spotlessApply

* feat: OIDC 소셜 로그인 구현 (#119)

* chore: 시큐리티 form 로그인 및 세션 등 비활성화 처리

* chore: oauth 의존성 추가

* chore: 시큐리티 yml 파일 작성

* feat: OAuth 정보로 조회하는 메서드 추가

* feat: OAuth 정보 필드를 멤버 엔티티에 추가

* feat: 게스트 멤버 유저 생성 메서드 구현

* chore: 공통 프로파일 분리

* chore: jwt 의존성 추가

* chore: 시큐리티 전용 설정 파일 분리

* feat: 시큐리티 yml에 만료시간 및 발급자 추가

* feat: JwtProperties 추가

* feat: JwtTokenProvider 구현

* feat: 에러코드 추가

* feat: 리프레시 토큰 및 레포지터리 임시 구현

* feat: OIDC 유저 서비스 구현

* feat: 성공 핸들러 임시 추가

* feat: 엑세스 토큰 DTO 추가

* feat: 시큐리티 OAuth 설정 반영

* fix: MemberRole이 게스트 상태를 가지도록 수정

* feat: 게스트 역할 여부 확인을 위한 커스텀 OIDC 유저 구현

* feat: 표준 스코프 스펙과 관계없이 userinfo를 가져오도록 빈 스코프로 설정

* refactor: OIDC 유저 서비스가 OidcUser 인터페이스에 의존하도록 변경

* feat: 시큐리티 관련 상수 클래스 추가

* feat: OIDC 로그인 성공 핸들러 구현

* refactor: 상수 클래스로 대체

* docs: 주석 변경

* fix: 토큰 키가 필요한 시점에 초기화되도록 수정

* fix: 오타 및 포매팅 수정

* refactor: 테스트 시 JPA 관련 빈 로딩 제외를 위해 설정 클래스 분리

* refactor: 리프레시 토큰의 ttl을 인자로 받도록 수정

* test: 리프레시 토큰 레포지터리 테스트 작성

* refactor: token 패키지를 auth 패키지로 변경

* feat: 마지막 로그인 시간 업데이트 기능 구현

* feat: 게스트 멤버 회원가입 구현

* test: 멤버 도메인 유닛 테스트 변경 및 회원가입 테스트 작성

* feat: 회원가입 서비스 및 컨트롤러 구현

* refactor: 필터와 토큰 간 결합도 낮추기 위해 프로바이더와 서비스 분리

* refactor: 리다이렉트 경로 및 상수 수정

* feat: JWT 인증 필터 구현

* feat: 토큰 재발급 로직 구현

* feat: 멤버 가입 DTO 추가

* feat: 토큰 만료 여부 확인 메서드 구현

* style: spotlessApply

* fix: 토큰이 있는 경우에만 체크하도록 수정

* refactor: 로컬 환경에서는 디비 스키마 항상 새로 생성

* refactor: 프론트 회원가입 페이지 url 반영

* feat: 허용된 URL 외에는 인증 수행하도록 변경

* feat: JWT 인증 필터 추가

* refactor: 회원가입 필요 여부는 헤더에 담아서 응답하도록 변경

* feat: atk, rtk 둘 다 만료 아닌 경우 rtk 재발급하는 로직 추가

* refactor: 커스텀 헤더 이름 변경

* refactor: 상수 클래스의 인스턴스화 막기

* refactor: 에러코드 위치 변경

* style: 포매팅 수정

* docs: 인증 API 스웨거 태그 추가

* chore: 환경변수 디폴트값 지정

* fix: 누락된 쉼표 추가

* style: 개행 추가

* fix: 컨트롤러 테스트에서 시큐리티 설정 제외

* feat: 애플 키파일로 시크릿 만드는 로직 임시 구현

* chore: 애플 프로바이더 및 클라이언트 정보 추가

* feat: 애플 요청 엔티티 컨버터 구현

* feat: 애플 요청 엔티티 컨버터 V2 구현

* feat: 애플 프로퍼티 로드하는 로직 구현

* docs: TODO 추가

* feat: 에러코드 추가

* feat: OIDC 로그인 실패 핸들러 추가

* feat: 커스텀 OAuth 엑세스 토큰 클라이언트 구현

* refactor: 한 라인에 한번의 작업만 수행하도록 개선

* fix: 오타 수정

* feat: 컨트롤러 테스트 임시 비활성화 처리

* refactor: 컴포넌트 추가

* feat: 시큐리티 설정 추가

* style: spotless 적용

* chore: 엑세스 토큰 시간 변경

* fix: OAuth 관련 설정 비활성화

* fix: OAuth 관련 환경변수 디폴트값 설정

* fix: 필터 모킹 추가

* docs: 주석 수정

* style: spotless 적용

* chore: service 패키지를 application으로 변경 (#141)

* chore: service 패키지를 application으로 변경

* fix: long casting 이슈 해결

* feat: 임시 아이디 / 패스워드 로그인 구현 (#143)

* refactor: 패키지 이동

* feat: 시큐리티 설정 변경

* refactor: 패키지 이동 경로 변경

* feat: 임시 회원가입 및 로그인 컨트롤러

* feat: 멤버 도메인에 아이디 및 비밀번호 추가

* feat: 임시 회원가입 구현

* refactor: 리퀘스트 패키지로 이동

* refactor: response 패키지로 이동

* feat: 아이디 유효성 검증 및 Transactional 추가

* feat: 임시 회원가입 및 로그인 인가 설정

* style: spotless

* feat: 가입 후 id 반환하도록 구현

* refactor: 사용하지 않는 의존성 제거

* feat: 시큐리티 http basic, form login 비활성화

* feat: 로그인 컨트롤러 구현

* feat: 로그인 및 토큰 발급 로직 구현

* fix: 비밀번호 일치 로직 수정

* feat: 로그인 시 게스트 멤버가 아닌지 검증

* fix: 에러 수정

* style: spotless 적용

* refactor: 임시 회원가입 후에도 토큰 발행하도록 수정

* style: spotless

* feat: 아이디 중복 체크 구현

* feat: readOnly = true 옵션 추가

* style: spotless

* feat: 미션 리스트 조회 시 인증 필요 상태 추가 (#140)

* refactor: MissionRecordTtl 클래스명 변경과 Key를 Long 타입으로 변경

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* refactor: MissionRecord create시 ttlFinishedAt 추가

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* feat: Mission 리스트 조회 시 사용되는 MissionStatus와 Reponse class 생성

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* refactor: QueryDsl findAllMission 쿼리메소드 로직과 네이밍 변경

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* feat: 미션 목록 조회시 MissionStatus도 반환하는 기능

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: 사용하지 않는 싱수 제거

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* test: Mission 리스트 조회 로직 변경으로 테스트 코드 수정

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: 미션 리스트 조회 Swagger Operation 변경

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: 출력문 제거

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* style: spotless

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

---------

Co-authored-by: uiurihappy <[email protected]>
Co-authored-by: uwoobeat <[email protected]>

* feat: Swagger에 RefresgToekn용 SecuritySchemes 추가 (#148)

* feat: 미션 기록 하루에 한개만 처리 가능하도록 기능 추가 (#130)

* feat: missionId로 해당미션에 오늘 작성된 기록이 있는지 판별하는 existsByMissionIdAndToday 메소드 추가

* feat: 미션 기록 생성 시 오늘 기록된건이 존재하는지 validate 추가

* style: 주석제거

* style: 코드 포메팅 수정

* refactor: 오늘 등록한 미션 일지가 있는지 확인하는 queryDsl 메소드명 변경

* fix: 유틸리티에서 픽스처 및 Mock 인증 삽입 로직 제거 (#149)

* fix: 픽스처 삽입 로직 제거

* fix: 시큐리티 mock 인증 삽입 로직 제거

* fix: 테스트 코드 BeforeEach 멤버 생성 로직 추가

---------

Co-authored-by: uwoobeat <[email protected]>
Co-authored-by: ybchar <[email protected]>

* feat: 진행중인 미션 제거하는 기능 (#153)

* feat: 진행중인 미션 제거하는 기능

* fix: 이미 진행중인 미션 삭제에서 예외 제거

* fix: Transactional read only 제거

* move: 이미 진행중인 미션기록들 삭제 MissionRecord로 이동

* refactor: member final 키워드 추가

* remove: 사용하지 않는 의존성 제거

* feat: 회원 탈퇴 로직 구현 (#155)

* feat: 회원 탈퇴 로직 구현

* feat: @kdomo 리뷰 반영

* fix: 마지막 로그인 시간 테스트 코드 삭제

* fix: SpringBoot Server TimeZone Asia/Seoul로 설정 (#158)

* feat: 마이페이지 프로필 사진 수정과 닉네임 변경 기능 구현 (#157)

* feat: member profile presigned URL 생성

* refactor: Profile Embeddable 객체 정적팩토리 메서드 적용

* refactor: OauthInfo Embeddable 객체 정적팩토리 메서드 적용

* feat: member profile 이미지 업로드 완료처리와 닉네임 변경

* style: spotless

* remove: 사용하지 않는 메소드 제거 (updateMemberStatus)

* style: swagger 응답 예시 값 추가

* refactor: 중복 ImageUrl 생성 코드 중복 제거

* feat: 회원 정보 조회 API (#160)

* feat: 회원 정보 조회 API

* style: spotless

* fix: 진행중인 미션기록 삭제할 때 QueryDsl 메소드 사용하도록 변경 (#162)

* fix: 진행중인 미션기록 삭제할 때 QueryDsl 메소드 사용하도록 변경

* feat: Member final 키워드 추가

* hotfix: develop 서버 CORS 모든 요청 허용으로 변경 (#164)

* hotfix: develop 서버 CORS 모든 요청 허용으로 변경

* style: spotless

* fix: 회원 정보 수정할 때 이미지 nullable 처리 (#166)

* fix: imageFileExtension nullable 처리

* fix: 닉네임 Notnull 처리

* fix: 이미지 null로 넘어왔을 경우 닉네임만 수정

* style: spotless

* fix: 토큰 만료기간 env로 관리 (#169)

* fix: 토큰 만료기간 env로 관리

* fix: 토큰 만료기간 env로 관리

* fix: 토큰 만료기간 default 설정

* feat: 미션 목록 조회 시 인증필요인 경우 MissionRecordId도 같이 응답 (#170)

* feat: Mission 리스트 조회 시 응답값에 MissionRecordId 필드 추가

* feat: 인증 필요인 경우 missionRecordId 값 추가

* style: spotless

* test: MissionFindAllResponse 필드 추가로 test 수정

* style: spotless

* feat: 닉네임 중복검사 (#176)

* refactor: 미션기록 삭제 시 `deleteById` 쿼리가 작동하지 않는 문제 개선 (#173)

* refactor: 고아 객체 사용하도록 개선

* feat: 현재 진행중인 미션기록 삭제 테스트

* style: spotless

* refactor: 엔티티 매니저 제거

* style: spotless

* refactor: 테스트 트랜잭션 제거 및 픽스쳐 분리

* fix: 오타 수정

* fix: 토큰 발급 로직 수정 및 발급 토큰을 쿠키로 관리하도록 개선 #171 (#174)

* feat: 쿠키 유틸리티 구현

* feat: 토큰 재발급 로직 구현

* feat: CORS 설정에 헤더 추가

* feat: 기존 컨트롤러 쿠키에 토큰 추가

* fix: 임시 회원가입 API로 다시 호출하여 토큰 받을 수 있게 수정

* fix: 오타 수정

* chore: 프로덕션 배포 워크플로 작성 (#179)

* chore: production build and deploy script 작성

* rafactor: key 대신 password로 변경

* rafactor: password 사용안하여 key로 변경

* chore: 트리거 릴리즈 태그로 변경

* chore: 이미지 태그 설정 부분 릴리즈 태그 값으로 변경

* chore: production deploy용 워크플로 생성

---------

Co-authored-by: uwoobeat <[email protected]>
Co-authored-by: ybchar <[email protected]>
Co-authored-by: yb__char <[email protected]>
Co-authored-by: Jaehyun Ahn <[email protected]>
  • Loading branch information
5 people authored Jan 19, 2024
1 parent 0604b89 commit 2faedc0
Show file tree
Hide file tree
Showing 159 changed files with 6,697 additions and 18 deletions.
29 changes: 29 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# top-most EditorConfig file
root = true

[*]
# [encoding-utf8]
charset = utf-8

# [newline-lf]
end_of_line = lf

# [newline-eof]
insert_final_newline = true

[*.bat]
end_of_line = crlf

[*.java]
# [indentation-tab]
indent_style = tab

# [4-spaces-tab]
indent_size = 4
tab_width = 4

# [no-trailing-spaces]
trim_trailing_whitespace = true

[line-length-120]
max_line_length = 120
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@kdomo @uwoobeat @uiurihappy
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/♻️-refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: "♻️ refactor"
about: 리팩토링 이슈 템플릿
title: "♻️ "
labels: "♻️ refactor"
assignees: ''

---

## 📌 Description
-
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/⚙️-chore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: "⚙️ chore"
about: 빌드 및 CI/CD 이슈 템플릿
title: "⚙️ "
labels: "⚙️ chore"
assignees: ''

---

## 📌 Description
-
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/✅-test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: "✅ test"
about: 테스트 이슈 템플릿
title: ""
labels: "✅ test"
assignees: ''

---

## 📌 Description
-
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/✨-feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: "✨ feature"
about: 기능 추가 이슈 템플릿
title: ""
labels: "✨ feature"
assignees: ''

---

## 📌 Description
-
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/🐛-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: "🐛 fix"
about: 버그 및 에러 이슈 템플릿
title: "🐛 "
labels: "🐛 bug/error"
assignees: ''

---

## 📌 Description
-
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/📝-documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: "📝 documentation"
about: 문서화 이슈 템플릿
title: "📝 "
labels: "📝 documentation"
assignees: ''

---

## 📌 Description
-
11 changes: 11 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## 🌱 관련 이슈
- close #

## 📌 작업 내용 및 특이사항
-

## 📝 참고사항
-

## 📚 기타
-
111 changes: 111 additions & 0 deletions .github/workflows/develop_build_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: develop Build And Deploy

on:
push:
branches: [ "develop" ]

jobs:
build:
runs-on: ubuntu-latest
environment: DEV
strategy:
matrix:
java-version: [ 17 ]
distribution: [ 'temurin' ]
outputs:
# IMAGE_TAG 환경 변수를 다른 Job에서 사용하기 위해 설정
image-tag: ${{ steps.image-tag.outputs.value }}
steps:
# 기본 체크아웃
- name: Checkout
uses: actions/checkout@v3

# JDK를 17 버전으로 세팅
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: ${{ matrix.distribution }}

# 이미지 태그 설정
- name: Set up image-tag by GITHUB_SHA
id: image-tag
run: echo "value=$(echo ${GITHUB_SHA::7})" >> $GITHUB_OUTPUT

# test 돌릴때 레디스 필요
- name: Start containers
run: docker-compose -f ./docker-compose-test.yaml up -d

# Gradlew 실행 허용
- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew

# Gradle 빌드
- name: Build with Gradle
id: gradle
uses: gradle/gradle-build-action@v2
with:
arguments: |
build
--scan
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}

# NCP Container Registry 로그인
- name: Login to NCP Container Registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.NCP_CONTAINER_REGISTRY }}
username: ${{ secrets.NCP_ACCESS_KEY }}
password: ${{ secrets.NCP_SECRET_KEY }}

# Docker 이미지 빌드 및 푸시
- name: Docker Build and Push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.NCP_CONTAINER_REGISTRY }}/server-spring:${{ steps.image-tag.outputs.value }}

# 서버로 docker-compose 파일 전송
- name: Copy docker-compose.yml to NCP Server
uses: appleboy/[email protected]
with:
host: ${{ secrets.NCP_HOST }}
username: ${{ secrets.NCP_USERNAME }}
key: ${{ secrets.NCP_PRIVATE_KEY }}
port: ${{ secrets.NCP_PORT }}
source: docker-compose.yaml
target: /home/tenminute/

# 슬랙으로 빌드 스캔 결과 전송
- name: Send to slack
uses: slackapi/[email protected]
with:
payload: |
{
"text": "Gradle Build Scan Report of ${{ github.workflow }}: ${{ steps.gradle.outputs.build-scan-url }}"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

deploy:
runs-on: ubuntu-latest
environment: DEV
needs: build
steps:
- name: Deploy to NCP Server
uses: appleboy/ssh-action@master
env:
NCP_CONTAINER_REGISTRY: ${{ secrets.NCP_CONTAINER_REGISTRY }}
NCP_IMAGE_TAG: ${{ needs.build.outputs.image-tag }}
with:
host: ${{ secrets.NCP_HOST }}
username: ${{ secrets.NCP_USERNAME }}
key: ${{ secrets.NCP_PRIVATE_KEY }}
port: ${{ secrets.NCP_PORT }}
envs: NCP_CONTAINER_REGISTRY,NCP_IMAGE_TAG # docker-compose.yml 에서 사용할 환경 변수
script: |
echo "${{ secrets.NCP_SECRET_KEY }}" | docker login -u "${{ secrets.NCP_ACCESS_KEY }}" --password-stdin "${{ secrets.NCP_CONTAINER_REGISTRY }}"
docker pull ${{ secrets.NCP_CONTAINER_REGISTRY }}/server-spring:${{ env.NCP_IMAGE_TAG }}
docker compose -f /home/tenminute/docker-compose.yaml up -d
docker image prune -a -f
30 changes: 30 additions & 0 deletions .github/workflows/develop_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: develop Deploy

on:
workflow_dispatch:
inputs:
commit_hash:
description: 'commit_hash'
required: true

jobs:
deploy:
runs-on: ubuntu-latest
environment: DEV
steps:
- name: Deploy to NCP Server
uses: appleboy/ssh-action@master
env:
NCP_CONTAINER_REGISTRY: ${{ secrets.NCP_CONTAINER_REGISTRY }}
NCP_IMAGE_TAG: ${{ github.event.inputs.commit_hash }}
with:
host: ${{ secrets.NCP_HOST }}
username: tenminute
key: ${{ secrets.NCP_PRIVATE_KEY }}
port: ${{ secrets.NCP_PORT }}
envs: NCP_CONTAINER_REGISTRY,NCP_IMAGE_TAG # docker-compose.yml 에서 사용할 환경 변수
script: |
echo "${{ secrets.NCP_SECRET_KEY }}" | docker login -u "${{ secrets.NCP_ACCESS_KEY }}" --password-stdin "${{ secrets.NCP_CONTAINER_REGISTRY }}"
docker pull ${{ secrets.NCP_CONTAINER_REGISTRY }}/server-spring:${{ github.event.inputs.commit_hash }}
docker compose -f /home/tenminute/docker-compose.yaml up -d
docker image prune -a -f
45 changes: 45 additions & 0 deletions .github/workflows/develop_pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: develop(pull_request) Check Style And Test
on:
pull_request:
branches:
- develop
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ 17 ]
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up Java
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: 'adopt'

- name: Start containers # test 돌릴때 레디스 필요
run: docker-compose -f ./docker-compose-test.yaml up -d

- name: Grant execute permission for gradlew
run: chmod +x ./gradlew

- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
arguments: check
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}

- name: SonarCloud scan
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonar --info --stacktrace
19 changes: 19 additions & 0 deletions .github/workflows/issue_set_merged.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Add 'merged' label to closed PR

on:
pull_request:
types:
- closed

jobs:
set_merged:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Add 'merged' label to closed PR
run: gh issue edit "$PR_NUMBER" --add-label "merged"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
Loading

0 comments on commit 2faedc0

Please sign in to comment.