Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[PR] Artscope 2.5 아고라, 이벤트 출시 #83

Merged
merged 218 commits into from
Nov 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
218 commits
Select commit Hold shift + click to select a range
ec2e27b
feat: exhibitions 조회 관련 dto 추가
haroya01 Oct 27, 2023
5d9df90
feat: exhibitions 날짜별 조회 로직 구현
haroya01 Oct 27, 2023
e64efb1
fix: 종료날짜가 시작날짜보다 하루 빠를때 예외가 발생하는 문제 해결
haroya01 Oct 27, 2023
ce2f7f6
test: Exhibition 조회 검증 테스트 코드 추가
haroya01 Oct 27, 2023
fd83b4e
feat: 통합 검색 API 추가
Hoon9901 Oct 27, 2023
5e46058
fix: MediaType 으로 변경한 것으로 인한 테스트 코드 수정
Hoon9901 Oct 27, 2023
c31604e
feat: Post Media 생성 기능 구현
Hoon9901 Oct 27, 2023
d6d0591
Merge pull request #45 from Media-XI/feat/exhibitions-조회
haroya01 Oct 27, 2023
fec2292
Merge branch 'develop' into feat/통합검색-포스트미디어-기능
haroya01 Oct 27, 2023
7e97898
fix: Post 생성 API 미디어 부재로 인한 오류 해결
Hoon9901 Oct 27, 2023
c3ccf22
Merge branch 'feat/통합검색-포스트미디어-기능' of https://github.com/Media-XI/art…
Hoon9901 Oct 27, 2023
81683b0
fix: LocalDate import error fix
Hoon9901 Oct 27, 2023
8d1ba6a
Merge pull request #46 from Media-XI/feat/통합검색-포스트미디어-기능
Hoon9901 Oct 27, 2023
a91c381
fix: PostMedia Post 매핑이 안되던 오류 해결
Hoon9901 Oct 30, 2023
e75f847
Merge pull request #47 from Media-XI/fix/postmedia-post-매핑오류
Hoon9901 Oct 30, 2023
ad63c5d
feat: Post 생성 시 Media 예외처리
Hoon9901 Oct 30, 2023
5cbf246
fix: Feed 조회시 PostMedia URL 추가
Hoon9901 Oct 30, 2023
eeb8e4b
fix: 통합검색 Pagination 매핑이 잘못된 로직 수정
Hoon9901 Oct 30, 2023
75297fb
Merge pull request #48 from Media-XI/fix/postmedia-issue
Hoon9901 Oct 30, 2023
526c5b8
Revert "[PR] Fix/postmedia issue"
Hoon9901 Oct 30, 2023
e03ab4f
Merge pull request #49 from Media-XI/revert-48-fix/postmedia-issue
Hoon9901 Oct 30, 2023
f31a2cb
fix: Post 생성 Media Size 체크 시 NPE 해결
Hoon9901 Oct 30, 2023
b92f6fb
Merge branch 'develop' into fix/postmedia-issue
Hoon9901 Oct 30, 2023
7d92af8
Merge branch 'develop' of https://github.com/Media-XI/art-platform-ba…
Hoon9901 Oct 30, 2023
bb2629c
Merge branch 'fix/postmedia-issue' of https://github.com/Media-XI/art…
Hoon9901 Oct 30, 2023
5c63ecb
Merge pull request #50 from Media-XI/fix/postmedia-issue
haroya01 Oct 30, 2023
c3e0a06
fix: PostMedia Reference Mapping Issue
Hoon9901 Oct 31, 2023
77bac87
Merge pull request #51 from Media-XI/fix/postmedia-issue
Hoon9901 Oct 31, 2023
5d0bd41
fix: PostResponseDTO media가 null인 이슈 해결
Hoon9901 Oct 31, 2023
6f8d8cd
Merge pull request #52 from Media-XI/fix/postmedia-issue
Hoon9901 Oct 31, 2023
9f5f4c7
feat: Member Company Role, Name 속성 추가
Hoon9901 Nov 1, 2023
32df52c
style: 통합검색 API ApiOperation 변경
Hoon9901 Nov 1, 2023
baa9779
style: CreateMemberDTO formatting
Hoon9901 Nov 1, 2023
9ab1e91
feat: 기획자 관련 Member 기능 추가
Hoon9901 Nov 1, 2023
8fc79b6
fix: 일부 테스트 코드 수정
Hoon9901 Nov 1, 2023
f566cf3
Merge pull request #53 from Media-XI/feat/기획자-회원가입
haroya01 Nov 1, 2023
4ffddbe
fix: 아트워크 비공개 상세조회가 되는 이슈 해결
Hoon9901 Nov 1, 2023
9030a8e
fix: flyway Underbar 누락으로 인한 DB 동기화 에러 해결
Hoon9901 Nov 1, 2023
2594f95
Merge pull request #54 from Media-XI/feat/기획자-회원가입
Hoon9901 Nov 1, 2023
b70d607
style: SecurityConfig Formatting
Hoon9901 Nov 1, 2023
7aa5015
feat: XSS Escaping Converter 구현
Hoon9901 Nov 1, 2023
f07f82f
fix: jackson datetype 라이브러리 버전 호환 해결
Hoon9901 Nov 1, 2023
3b04374
feat: 큰따옴표(\") XSS 방지 필터링 코드 추가
Hoon9901 Nov 1, 2023
e89a730
feat: 큰따옴표(\") XSS 방지 필터링 코드 추가
Hoon9901 Nov 1, 2023
48f533f
Merge branch 'feat/xss-protection' of https://github.com/Media-XI/art…
Hoon9901 Nov 1, 2023
6260f1d
Merge pull request #55 from Media-XI/feat/xss-protection
haroya01 Nov 1, 2023
c2e5bd1
style: Member.java format
Hoon9901 Nov 2, 2023
13ecad6
fix: Member DTO Optional 직렬화 문제 해결
Hoon9901 Nov 2, 2023
fcc0db2
merge conflict
Hoon9901 Nov 2, 2023
13d5a41
Merge pull request #56 from Media-XI/fix/member-dto-optional-serialize
haroya01 Nov 2, 2023
f6872a8
feat: feed, post, artwork에 기획자 관련 정보 추가
Hoon9901 Nov 2, 2023
66cc484
feat: 아트워크 댓글 수정 API 및 관리자 수정,삭제 기능 추가
Hoon9901 Nov 2, 2023
7ecb8df
feat: 게시글 및 댓글 수정 삭제 관리자 접근 처리
Hoon9901 Nov 2, 2023
9fcceb2
feat: 관리자 게시글, 아트워크 수정, 삭제 접근 관련 테스트 코드 작성
Hoon9901 Nov 2, 2023
076c7cc
fix: 작성자가 아닌 회원이 아트워크 수정 테스트 수정
Hoon9901 Nov 2, 2023
3fc0c5d
feat: 테스트 시 필요한 CURATOR 권한 더미데이터 추가
haroya01 Nov 2, 2023
8851479
feat: 이벤트와 관련된 테이블(location,exhibition,participant)생성
haroya01 Nov 2, 2023
bb3d814
refactor: 에러 로그 관련 메세지 반환 로직 추가
haroya01 Nov 2, 2023
725de82
feat: event와 관련된 엔티티 클래스 추가(exhibition,location,participant)
haroya01 Nov 2, 2023
4e40e1c
feat: event와 관련된 DAO 구현
haroya01 Nov 2, 2023
8ec82de
feat: event와 관련된 기능(exhibition, location, schedule) 구현
haroya01 Nov 2, 2023
15a0b39
test: event와 관련된 (exhibition, location, schedule) 테스트 코드 추가
haroya01 Nov 2, 2023
e621556
chore: exhibition 컨트롤러 필요없는 주석 제거
haroya01 Nov 2, 2023
bcf6452
fix: 이벤트 수정 삭제 관련 누락된 유저 권한 추가
haroya01 Nov 2, 2023
9958cd8
fix: exhibition price column nullable 명시
haroya01 Nov 2, 2023
0196b93
refactor: 이벤트 수정 api를 put->patch로 변경
haroya01 Nov 2, 2023
1d50a48
chore: 이벤트 삭제시 작성자가 아닐경우 에러 메세지 수정
haroya01 Nov 3, 2023
6a6952a
chore: 이벤트 삭제 성공시 반환되는 성공 메세지 수정
haroya01 Nov 3, 2023
78e9fda
fix: 위도 경도 검증 어노테이션 추가
haroya01 Nov 3, 2023
1408c58
refactor: ResponseLocationDTO에 builder패턴 추가
haroya01 Nov 3, 2023
5656f05
chore: location 조회, 삭제 관련 TODO추가 및 에러 반환
haroya01 Nov 3, 2023
2f19096
fix: 이벤트 수정 api patch -> put 으로 롤백
haroya01 Nov 3, 2023
656410d
refactor: 이벤트(exhibition,eventSchedule,Participant) 관련된 DTO 네이밍 변경
haroya01 Nov 3, 2023
415cf7d
chore: 린트 재적용 및 코드 단순화
haroya01 Nov 3, 2023
4778c1e
Merge branch 'develop' into feat/exhibition-기능
haroya01 Nov 3, 2023
fbe4968
merge: 병합 문제 해결
haroya01 Nov 3, 2023
8138132
Merge remote-tracking branch 'origin/feat/exhibition-기능' into feat/ex…
haroya01 Nov 3, 2023
3810168
Merge pull request #58 from Media-XI/feat/exhibition-기능
haroya01 Nov 3, 2023
cd71d4a
fix: Flyway db migration 순서 수정 및 DB 검증
Hoon9901 Nov 3, 2023
2fce7cb
Merge pull request #59 from Media-XI/fix/db-migration
Hoon9901 Nov 3, 2023
64d3b63
Merge branch 'develop' into feat/기획자-관련-정보추가-및-Admin-crud
Hoon9901 Nov 3, 2023
ad912c9
fix: Merge로 인한 코드 정리
Hoon9901 Nov 3, 2023
088d090
Merge pull request #57 from Media-XI/feat/기획자-관련-정보추가-및-Admin-crud
Hoon9901 Nov 3, 2023
c1c2ea2
style: all files formatting
Hoon9901 Nov 3, 2023
8f28c10
feat: Agora 도메인 관련 Entity 및 SQL 작성
Hoon9901 Nov 3, 2023
b8b33cc
feat: 특정 장소 조회 하는 api 생성
haroya01 Nov 3, 2023
4dbfda3
feat: location 조회관련 api수정
haroya01 Nov 3, 2023
5ed874c
refactor: locations -> location 으로 api수정
haroya01 Nov 3, 2023
fc75815
test: location생성, 조회 테스트 코드 추가
haroya01 Nov 3, 2023
da535cf
feat: AgoraOpinion 복합 외래키 지정
Hoon9901 Nov 3, 2023
ce9972b
feat: Agora 도메인 관련 Entity 생성
Hoon9901 Nov 3, 2023
685ecbf
feat: Agora 생성 API 구현
Hoon9901 Nov 3, 2023
30a6a89
style: formatting
Hoon9901 Nov 3, 2023
4f5ac1c
feat: Member Agora 리스트 추가 및 로그인 검증 Exception 추가
Hoon9901 Nov 3, 2023
0aea5d1
style: member format
Hoon9901 Nov 4, 2023
b20de41
style: Agora Formatting 및 패키지 명 변경
Hoon9901 Nov 4, 2023
2c48d86
chore: AgoraParicipantResponseDTO.java 잘못된 이름 변경
Hoon9901 Nov 4, 2023
ae6980f
feat: 아고라 조회, 수정, 삭제, 투표 기능 구현
Hoon9901 Nov 6, 2023
74edefe
fix: location 조회 테스트 코드 수정
haroya01 Nov 6, 2023
2fd2c85
Merge pull request #60 from Media-XI/feat/location-조회
haroya01 Nov 6, 2023
7180134
refactor: Agora 카운트 조회 로직 개선
Hoon9901 Nov 7, 2023
320d8b5
feat: event_participant에 name column추가
haroya01 Nov 7, 2023
10b40aa
feat: 유저 조회 정보 반환 dto 추가
haroya01 Nov 7, 2023
3ccbb3f
feat: 유저 조회 정보 검색 로직 추가
haroya01 Nov 7, 2023
cbf0afc
refactor: 이벤트 기간 전체 조회 @Get api/exhibtions body->query parameter로 변경
haroya01 Nov 7, 2023
42cedaa
refactor: 이벤트 스케줄 참석자 처리 로직 변경
haroya01 Nov 7, 2023
a6d414b
feat: 유저 리스트 조회할 수 있는 api 추가
haroya01 Nov 7, 2023
f2d5cd3
test: 테스트코드 추가
haroya01 Nov 7, 2023
1ea5b00
chore: ExhibitionController에 린트 적용
haroya01 Nov 7, 2023
08b1a8d
style: lint로 인한 log 출력 포맷 변경
Hoon9901 Nov 7, 2023
416447e
refactor: search member 로직 리펙토링
haroya01 Nov 7, 2023
54152b8
chore: 'username 으로 유저 리스트 조회'로 test 이름 변경
haroya01 Nov 7, 2023
37d0e17
fix: agora opinion table 잘못된 FK 매핑 수정
Hoon9901 Nov 8, 2023
4700b8e
chore: ArtworkLikeMember 의미없는 상속 제거
Hoon9901 Nov 8, 2023
526627f
style: code 포맷팅
Hoon9901 Nov 8, 2023
80e8915
refactor: Agora 수정, 삭제, 조회 리팩터링
Hoon9901 Nov 8, 2023
aedb317
feat: Agora Entity 중립 관련 Column 추가
Hoon9901 Nov 8, 2023
1865925
feat: 아고라 중립 로직 추가 및 테스트 코드 작성
Hoon9901 Nov 8, 2023
1d92b4b
Merge pull request #61 from Media-XI/feat/스케줄-이름조회
haroya01 Nov 8, 2023
dcd4208
refactor: dto 유저정보 반환값 추가
haroya01 Nov 8, 2023
0bb10fd
fix: 멤버 리스트 조회가 안되던 문제 해결
haroya01 Nov 8, 2023
b29606c
test: member 리스트 조회 관련 테스트 코드 수정
haroya01 Nov 8, 2023
dd8b77b
feat: 아고라 의견 생성, 수정, 삭제 API 구현
Hoon9901 Nov 8, 2023
e927b4f
merge conflict
Hoon9901 Nov 8, 2023
f3e32e1
Merge pull request #63 from Media-XI/fix/member-list-조회-문제해결
haroya01 Nov 8, 2023
d09c6f3
refactor: AgoraParticipant Lazy 로딩 설정
Hoon9901 Nov 8, 2023
0642c5a
feat: AgoraParticipantResponseDTO 익명 시 프로필 URL 이 노출되지 않도록 수정
Hoon9901 Nov 8, 2023
078005c
feat: Agora Update 시 중립 투표 메시지도 받도록 수정
Hoon9901 Nov 8, 2023
ae112bb
refactor: Agora 수정 시 작성자 비교 개선
Hoon9901 Nov 8, 2023
ce28e23
refactor: AgoraUpdateDTO.java 중립 Text 변수명 변경
Hoon9901 Nov 8, 2023
e486a6b
chore: 사용하지 않는 쿼리메소드 삭제
Hoon9901 Nov 8, 2023
859fc45
feat: Agora 수정 테스트 코드 중립 메시지 추가 및 수정 로직 변경
Hoon9901 Nov 8, 2023
5ec0f43
refactor: 존재하지 않는 아고라 체크 개선
Hoon9901 Nov 8, 2023
c1d5999
fix: exhibition_participant 테이블 event_participant 으로 변경
haroya01 Nov 8, 2023
9895e84
fix: 참여자가 조회 안되던 문제 해결
haroya01 Nov 8, 2023
7ea54ea
Merge pull request #65 from Media-XI/fix/event-조회-문제해결
haroya01 Nov 8, 2023
906b3c7
refactor: imageService 동사-주어구조로 함수 네이밍 적용
Hoon9901 Nov 8, 2023
cc3cd21
refactor: 잘못된 AgoraResponseDTO 클래스명 변경
Hoon9901 Nov 8, 2023
5e41a01
refactor: AgoraController isUserVoteCancle로 변경 및 Agora.isAuthor 메소드 내…
Hoon9901 Nov 8, 2023
c362bb0
refactor: AgoraParticipant hasAgora로 메소드 네이밍
Hoon9901 Nov 8, 2023
4253b96
chore: 불필요한 주석 제거
Hoon9901 Nov 8, 2023
e974b9e
Merge pull request #64 from Media-XI/feat/아고라-기능
Hoon9901 Nov 8, 2023
0ecbf81
fix: AgoraOpinion 생성 API 관련 에러 해결
Hoon9901 Nov 9, 2023
20689e6
fix: AgoraController AgoraOpinionRequestDTO 생성
haroya01 Nov 9, 2023
30e304c
fix: AgoraController 관련 테스트 코드 수정
haroya01 Nov 9, 2023
9d7d541
Merge pull request #66 from Media-XI/fix/agora-opinion-create-issue
Hoon9901 Nov 9, 2023
1d83660
fix: event_schedule 조회 문제 해결
haroya01 Nov 10, 2023
766c35d
test: event_schedule 조회 문제 관련 test코드 문제 해결
haroya01 Nov 10, 2023
b9ad73e
feat: Exception Logging 더 자세한 RuntimeException 오류 내용 출력
Hoon9901 Nov 10, 2023
d1d616a
feat: CSRF 방어를 위한 ReferrerCheckIntercepter 구현
Hoon9901 Nov 10, 2023
5afafbc
Merge pull request #67 from Media-XI/fix/이벤트검색-문제해결
haroya01 Nov 10, 2023
ad278dd
refactor: location의 link column 제거 및 url의 null옵션 제거
haroya01 Nov 10, 2023
192ea54
fix: handleRuntimeException 상세한 에러 출력으로 인한 에러 해결
Hoon9901 Nov 10, 2023
ebe137f
feat: location검색 Response DTO 생성
haroya01 Nov 10, 2023
5ca077c
refactor: location link column제거
haroya01 Nov 10, 2023
65bf774
feat: 키워드로 location 검색 기능 추가
haroya01 Nov 10, 2023
14e06f1
test: location 검색관련 test코드 추가 및 location link 관련 column제거
haroya01 Nov 10, 2023
0ad345c
Merge pull request #68 from Media-XI/feat/csrf-protection-intercept
Hoon9901 Nov 10, 2023
251fb71
refactor: LocationCreateDTO webSiteUrl에 min 조건 추가
haroya01 Nov 10, 2023
86709c6
refactor: of -> from 으로 변경
haroya01 Nov 10, 2023
c6e3540
Merge pull request #69 from Media-XI/feat/location-검색
haroya01 Nov 10, 2023
29cfe71
fix: exhibition 전체조회시 조회가 안되던 문제 해결
haroya01 Nov 10, 2023
40c3fe5
fix: 스케줄 시작시간과 종료시간이 같을시 예외처리
haroya01 Nov 10, 2023
118e9c0
Merge pull request #71 from Media-XI/fix/스케줄-생성-문제해결
haroya01 Nov 10, 2023
5e7659c
feat: Swagger 보안 접속 설정
haroya01 Nov 10, 2023
23c84be
Merge pull request #70 from Media-XI/fix/Exhibition-전체조회-문제해결
haroya01 Nov 10, 2023
f59db5c
chore: ds_store file delete
haroya01 Nov 10, 2023
423f015
Merge pull request #72 from Media-XI/feat/security-swagger-ui
haroya01 Nov 10, 2023
aa9a559
feat: isUserVoteCancle property JsonIgnore 적용
Hoon9901 Nov 13, 2023
24a1ab2
feat: Agora 상세 조회시 사용자 투표 여부 표시
Hoon9901 Nov 13, 2023
f07a7e9
feat: Feed Agora 조회 추가
Hoon9901 Nov 13, 2023
1fecd58
feat: Agora 상세 조회 시 작성자 여부, 의견 작성자 여부, 투표 여부 추가
Hoon9901 Nov 13, 2023
69cf691
refactor: AgoraResponseDTO.of() 메소드 내 dto 변수명 통일
Hoon9901 Nov 13, 2023
8e127ac
refactor: Agora 관련 변수명 변경, 메소드 변경
Hoon9901 Nov 13, 2023
484fa15
fix: Agora 조회시 로그인 안되있을 시 에러 해결
Hoon9901 Nov 13, 2023
f5636d2
feat: 이벤트 스케쥴 전체 조회시 조회 기준에 기본값 추가
haroya01 Nov 13, 2023
6f41501
feat: 조회시 기본값 설정 관련 누락된 파일 추가
haroya01 Nov 13, 2023
daa4660
refactor: 이벤트 조회 쿼리 변경
haroya01 Nov 13, 2023
630b663
Merge pull request #74 from Media-XI/ARTDEV-36-Agora-feed-add
Hoon9901 Nov 13, 2023
5c99ae2
feat: event_date, event_schedule uk로 설정
haroya01 Nov 13, 2023
e85ba96
feat: Feed Exhibition 항목 추가
haroya01 Nov 13, 2023
5f23d9c
feat: EventSchedule Date와 Time 형식 변경에 따른 도메인 수정 및 로직 변경
haroya01 Nov 13, 2023
4c3011d
style: All files formatting
haroya01 Nov 13, 2023
e7d0770
Merge branch 'develop' into fix/event-schedule-조회-문제해결
haroya01 Nov 13, 2023
832344a
fix: ExhibitionSearchDTO builder.default 추가
haroya01 Nov 13, 2023
fbffc0d
Merge pull request #75 from Media-XI/fix/event-schedule-조회-문제해결
Hoon9901 Nov 13, 2023
7bd4e72
fix: Agora Media 조회 Null 예외 처리
Hoon9901 Nov 13, 2023
055a6d4
Merge pull request #76 from Media-XI/fix/Feed-조회-에러
Hoon9901 Nov 13, 2023
cb5f115
fix: Exhibtion Schedule 존재하지 않을 때 Feed 조회시 에러 해결
Hoon9901 Nov 13, 2023
84ba3e0
Merge pull request #77 from Media-XI/fix/Feed-조회-에러
Hoon9901 Nov 13, 2023
f626730
feat: ExhibitionDetailResponseDTO 생성 및 관련 로직 변경/개선
Hoon9901 Nov 14, 2023
58e7b5b
Merge pull request #78 from Media-XI/fix/exhibition-order-변경
Hoon9901 Nov 14, 2023
98c49e5
fix: Exhibition 기간 조회 시 첫번째 스케쥴을 받지 않도록 로직 수정
Hoon9901 Nov 14, 2023
3670ebb
feat: 전시와 스케줄 조회 JPQL Multi Columns 받도록 개선
Hoon9901 Nov 14, 2023
b8e20c5
Merge pull request #79 from Media-XI/fix/exhibition-기간조회-수정
Hoon9901 Nov 14, 2023
9afe02e
chore: SpringBoot 2.7.17 Migration
Hoon9901 Nov 15, 2023
9a701a2
fix: Where Annotation 값 변경
Hoon9901 Nov 15, 2023
e7433d3
chore: JDK 17 적용
Hoon9901 Nov 15, 2023
2a949f4
fix: Jackson 잘못된 Setter 메소드로 인한 BufferImage 바인딩 에러 해결
Hoon9901 Nov 15, 2023
685f1d3
fix: JPA UUID BINARY(255) 사용 해결을 위한 Column 명시적으로 정의
Hoon9901 Nov 15, 2023
7d2cc4a
chore: spring security 5.8 update
Hoon9901 Nov 15, 2023
01752e1
chore: Spring Boot 3.0 마이그레이션
Hoon9901 Nov 15, 2023
174c75d
chore: Spring Security 6.X 마이그레이션
Hoon9901 Nov 15, 2023
192ccb4
chore: springfox -> spring doc으로 swagger ui 마이그레이션
Hoon9901 Nov 15, 2023
f4b1e0b
chore: Application Properties 변경
Hoon9901 Nov 15, 2023
77be288
fix: securityMatcher로 인한 SecurityContext 작동안하는 현상 해결
Hoon9901 Nov 15, 2023
5d30fc7
Merge pull request #80 from Media-XI/chore/spring-3.X-migration
Hoon9901 Nov 15, 2023
6720fc4
chore: Action Build 프로세스 test task 삭제
Hoon9901 Nov 15, 2023
b2b68e3
Merge pull request #81 from Media-XI/chore/delete-test-task-to-build-…
Hoon9901 Nov 15, 2023
26d079e
feat: HTMLCharacterEscapes surrogate pair check
Hoon9901 Nov 16, 2023
e5e7304
feat: Member.java @GeneratedValue strategy 명시적 선언
Hoon9901 Nov 16, 2023
50160b7
chore: Spring Boot 3.1.X migration
Hoon9901 Nov 16, 2023
2d9662b
chore: Spring Security 6.X Migration
Hoon9901 Nov 16, 2023
1acbe33
feat: AgoraCreateDTO 투표 메시지 유효성 검증 추가
Hoon9901 Nov 16, 2023
201243c
chore: RuntimeException printStackTrace 추가
Hoon9901 Nov 16, 2023
91b1927
chore: Custom printStackTrace 추가
Hoon9901 Nov 16, 2023
0cd1974
Merge pull request #82 from Media-XI/fix/member-uuid-issue
Hoon9901 Nov 16, 2023
5ddc00b
Merge branch 'main' into develop
Hoon9901 Nov 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions .github/workflows/dev-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,10 @@ env:
JASYPT_ENCRYPTOR_PASSWORD: ${{ secrets.JASYPT_ENCRYPTOR_PASSWORD }}

jobs:
test:
uses: ./.github/workflows/test.yaml
secrets:
JASYPT_ENCRYPTOR_PASSWORD: ${{ secrets.JASYPT_ENCRYPTOR_PASSWORD }}

build-dockerized-development:
name: Build Dockerized Development
runs-on: ubuntu-latest
needs: test

services:
redis:
Expand All @@ -35,10 +30,10 @@ jobs:
steps:
- uses: actions/checkout@v3

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

- name: Cache Gradle packages
Expand Down
9 changes: 2 additions & 7 deletions .github/workflows/prod-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,10 @@ env:
AWS_CODE_DEPLOY_GROUP: artscope-codedeploy-group

jobs:
test:
uses: ./.github/workflows/test.yaml
secrets:
JASYPT_ENCRYPTOR_PASSWORD: ${{ secrets.JASYPT_ENCRYPTOR_PASSWORD }}

build-dockerized-production:
name: Build and push Docker image
runs-on: ubuntu-latest
needs: test

services:
redis:
Expand All @@ -36,10 +31,10 @@ jobs:
steps:
- uses: actions/checkout@v3

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

- name: Cache Gradle packages
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
steps:
- uses: actions/checkout@v3

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

- name: Cache Gradle packages
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:11
FROM openjdk:17

ARG JAVA_OPTS

Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.prod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:11
FROM openjdk:17

ARG JAVA_OPTS

Expand Down
48 changes: 29 additions & 19 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
plugins {
id 'org.springframework.boot' version '2.6.6'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'org.springframework.boot' version '3.1.5'
id 'io.spring.dependency-management' version '1.1.4'
id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
sourceCompatibility = '17'

configurations {
compileOnly {
Expand All @@ -16,7 +16,6 @@ configurations {
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}

}

repositories {
Expand All @@ -26,19 +25,28 @@ repositories {
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'org.springframework.boot:spring-boot-starter-security:2.6.7'
implementation 'org.springframework.boot:spring-boot-starter-validation:2.6.7'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:2.6.7'
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation 'org.springframework.boot:spring-boot-starter-security:'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-mail' // email
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

// Swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'

// thymeleaf
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

// https://mvnrepository.com/artifact/org.apache.tika/tika-core
implementation 'org.apache.tika:tika-core:2.7.0' // Image Validation

implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.3'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.3'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.3'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

// XSS Protection
// https://mvnrepository.com/artifact/org.apache.commons/commons-text
implementation 'org.apache.commons:commons-text:1.11.0'

// Env Security
implementation("com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5")
Expand All @@ -47,24 +55,26 @@ dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

runtimeOnly 'com.h2database:h2'
runtimeOnly 'mysql:mysql-connector-java'
runtimeOnly 'com.mysql:mysql-connector-j'
implementation 'org.flywaydb:flyway-core'
// implementation 'org.postgresql:postgresql:42.5.0'
implementation 'org.flywaydb:flyway-mysql'

implementation 'org.springframework.boot:spring-boot-starter-data-redis'

implementation 'org.springframework.security:spring-security-test:5.6.7'
implementation 'org.springframework.security:spring-security-test'

// Log
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
implementation("org.springframework.boot:spring-boot-starter-log4j2")

testCompileOnly 'org.projectlombok:lombok:1.18.22'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.findify:s3mock_2.13:0.2.6'
testImplementation 'com.h2database:h2'

}

tasks.named('test') {
test {
useJUnitPlatform()
}
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
5 changes: 0 additions & 5 deletions src/main/java/com/example/codebase/ArtBackendApplication.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
package com.example.codebase;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Slf4j
@EnableScheduling
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

public class JwtSecurityConfig extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {

private TokenProvider tokenProvider;
private final TokenProvider tokenProvider;

public JwtSecurityConfig(TokenProvider tokenProvider) {
this.tokenProvider = tokenProvider;
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/com/example/codebase/config/RedisConfig.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.example.codebase.config;

import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
Expand All @@ -15,10 +13,10 @@
@EnableRedisRepositories
public class RedisConfig {

@Value("${spring.redis.host}")
@Value("${spring.data.redis.host}")
private String host;

@Value("${spring.redis.port}")
@Value("${spring.data.redis.port}")
private int port;

@Bean
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/example/codebase/config/S3Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ public BasicAWSCredentials basicAWSCredentials() {
@Bean
public AmazonS3 amazonS3() {
return AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials()))
.build();
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials()))
.build();
}
}
110 changes: 61 additions & 49 deletions src/main/java/com/example/codebase/config/SecurityConfig.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,47 @@
package com.example.codebase.config;

import com.example.codebase.domain.auth.service.CustomOAuth2UserService;
import com.example.codebase.domain.auth.handler.OAuth2AuthenticationFailureHandler;
import com.example.codebase.domain.auth.handler.OAuth2AuthenticationSuccessHandler;
import com.example.codebase.domain.auth.service.CustomOAuth2UserService;
import com.example.codebase.jwt.JwtAccessDeniedHandler;
import com.example.codebase.jwt.JwtAuthenticationEntryPoint;
import com.example.codebase.jwt.TokenProvider;
import com.example.codebase.jwt.JwtAccessDeniedHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@EnableMethodSecurity
public class SecurityConfig {
private final TokenProvider tokenProvider;
private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
private final JwtAccessDeniedHandler jwtAccessDeniedHandler;
private final OAuth2AuthenticationSuccessHandler oAuth2AuthenticationSuccessHandler;
private final OAuth2AuthenticationFailureHandler oAuth2AuthenticationFailureHandler;
private final CustomOAuth2UserService customOAuth2UserService;
private final String[] permitList = {
"/v2/**",
"/v3/**",
"/configuration/**",
"/swagger*/**",
"/webjars/**",
"/swagger-resources/**"
};

@Autowired
public SecurityConfig(TokenProvider tokenProvider, JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint, JwtAccessDeniedHandler jwtAccessDeniedHandler, OAuth2AuthenticationSuccessHandler oAuth2AuthenticationSuccessHandler, OAuth2AuthenticationFailureHandler oAuth2AuthenticationFailureHandler, CustomOAuth2UserService customOAuth2UserService) {
public SecurityConfig(TokenProvider tokenProvider, JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint,
JwtAccessDeniedHandler jwtAccessDeniedHandler,
OAuth2AuthenticationSuccessHandler oAuth2AuthenticationSuccessHandler,
OAuth2AuthenticationFailureHandler oAuth2AuthenticationFailureHandler,
CustomOAuth2UserService customOAuth2UserService) {
this.tokenProvider = tokenProvider;
this.jwtAuthenticationEntryPoint = jwtAuthenticationEntryPoint;
this.jwtAccessDeniedHandler = jwtAccessDeniedHandler;
Expand All @@ -33,56 +50,51 @@ public SecurityConfig(TokenProvider tokenProvider, JwtAuthenticationEntryPoint j
this.customOAuth2UserService = customOAuth2UserService;
}

private String[] permitList = {
"/v2/**",
"/v3/**",
"/configuration/**",
"/swagger*/**",
"/webjars/**",
"/swagger-resources/**"
};
// @Override
// public void configure(WebSecurity web) throws Exception {
// web
// .ignoring()
// .antMatchers("/h2-console/**", "/favicon.ico")
// .antMatchers(permitList);
// }

@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/h2-console/**", "/favicon.ico")
.antMatchers(permitList);
}
/*
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
}
*/

@Override
protected void configure(HttpSecurity http) throws Exception {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.formLogin().disable()
.httpBasic().disable()
.headers().frameOptions().disable()

.and()
.exceptionHandling()
.authenticationEntryPoint(jwtAuthenticationEntryPoint)
.accessDeniedHandler(jwtAccessDeniedHandler)
.csrf(AbstractHttpConfigurer::disable)
.formLogin(AbstractHttpConfigurer::disable)
.httpBasic(AbstractHttpConfigurer::disable)
.headers((headers) -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable))

.oauth2Login((oauth2Login) -> oauth2Login
.successHandler(oAuth2AuthenticationSuccessHandler)
.failureHandler(oAuth2AuthenticationFailureHandler)
.userInfoEndpoint((userInfoEndpointConfig -> userInfoEndpointConfig.userService(customOAuth2UserService))))

.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.exceptionHandling((exceptionHandler -> exceptionHandler
.authenticationEntryPoint(jwtAuthenticationEntryPoint)
.accessDeniedHandler(jwtAccessDeniedHandler)))

.and()
.authorizeRequests()
.antMatchers("/api/**").permitAll()
.antMatchers(permitList).permitAll()
.sessionManagement((httpSecuritySessionManagementConfigurer) -> httpSecuritySessionManagementConfigurer
.sessionFixation().none()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS))

.anyRequest().authenticated()
.authorizeHttpRequests((authz) -> authz
.requestMatchers("/api/**", "/hizz").permitAll()
.requestMatchers(permitList).hasAnyAuthority("ROLE_ADMIN")
.anyRequest().authenticated()
)

.and()
.apply(new JwtSecurityConfig(tokenProvider))
.apply(new JwtSecurityConfig(tokenProvider));

.and()
.oauth2Login() // oidc
.successHandler(oAuth2AuthenticationSuccessHandler)
.failureHandler(oAuth2AuthenticationFailureHandler)
.userInfoEndpoint().userService(customOAuth2UserService);
return http.build();
}
}

Loading
Loading