Skip to content

Commit 8236e48

Browse files
authored
chore: v0.3.0 배포
chore: v0.3.0 배포
2 parents b7035bd + 4404133 commit 8236e48

File tree

258 files changed

+7437
-2534
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

258 files changed

+7437
-2534
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
node_modules
2+
.env.*
23

34
.DS_Store
45
.gradle
@@ -34,3 +35,5 @@ out/
3435
/.nb-gradle/
3536
### VS Code ###
3637
.vscode/
38+
### logs ###
39+
/logs/

backend/build.gradle

+32-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
2-
id 'org.springframework.boot' version '2.7.1'
2+
id 'org.springframework.boot' version '2.6.9'
33
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
4-
id 'org.asciidoctor.convert' version '1.5.8'
4+
id 'org.asciidoctor.jvm.convert' version '3.3.2'
55
id 'java'
66
}
77

@@ -10,9 +10,13 @@ version = '0.0.1-SNAPSHOT'
1010
sourceCompatibility = '11'
1111

1212
configurations {
13+
asciidoctorExtensions
1314
compileOnly {
1415
extendsFrom annotationProcessor
1516
}
17+
all {
18+
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
19+
}
1620
}
1721

1822
repositories {
@@ -25,10 +29,13 @@ ext {
2529

2630
dependencies {
2731
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
32+
implementation 'org.springframework.boot:spring-boot-starter-webflux'
33+
implementation 'io.netty:netty-resolver-dns-native-macos:4.1.75.Final:osx-aarch_64'
2834
implementation 'org.springframework.boot:spring-boot-starter-validation'
2935
implementation 'org.springframework.boot:spring-boot-starter-web'
36+
implementation 'org.flywaydb:flyway-core:6.4.2'
3037
compileOnly 'org.projectlombok:lombok'
31-
runtimeOnly 'com.h2database:h2'
38+
runtimeOnly 'com.h2database:h2:1.4.200'
3239
runtimeOnly 'mysql:mysql-connector-java'
3340
annotationProcessor 'org.projectlombok:lombok'
3441
testImplementation 'org.springframework.boot:spring-boot-starter-test'
@@ -37,6 +44,9 @@ dependencies {
3744
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
3845
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
3946
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
47+
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
48+
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml'
49+
asciidoctorExtensions 'org.springframework.restdocs:spring-restdocs-asciidoctor'
4050
}
4151

4252
tasks.named('test') {
@@ -45,6 +55,25 @@ tasks.named('test') {
4555
}
4656

4757
tasks.named('asciidoctor') {
58+
configurations 'asciidoctorExtensions'
59+
baseDirFollowsSourceFile()
4860
inputs.dir snippetsDir
4961
dependsOn test
5062
}
63+
64+
asciidoctor.doFirst {
65+
delete file('src/main/resources/static/docs')
66+
}
67+
68+
task createDocument(type: Copy) {
69+
dependsOn asciidoctor
70+
from file("build/docs/asciidoc")
71+
into file("src/main/resources/static")
72+
}
73+
74+
bootJar {
75+
dependsOn createDocument
76+
from("${asciidoctor.outputDir}") {
77+
into 'static/docs'
78+
}
79+
}

backend/src/docs/asciidoc/auth.adoc

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
== 로그인
2+
3+
=== 카카오 Oauth
4+
operation::auth-controller-test/kakao-login[snippets='http-request,http-response']
+179
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
2+
== 에러코드
3+
=== 롤링페이퍼 에러
4+
5+
|===
6+
| error code | error message | show message | status code
7+
8+
| `1001`
9+
| 롤링페이퍼 제목은 20자를 초과할 수 없습니다. title={%s}
10+
| 롤링페이퍼 제목은 20자를 초과할 수 없습니다.
11+
| `400 Bad Request`
12+
13+
| `1002`
14+
| 롤링페이퍼 제목은 공백일 수 없습니다.
15+
| 롤링페이퍼 제목은 공백일 수 없습니다.
16+
| `400 Bad Request`
17+
|===
18+
19+
=== 메시지 에러
20+
21+
|===
22+
| error code | error message | show message | status code
23+
24+
| `2001`
25+
| 메시지는 공백일 수 없습니다.
26+
| 메시지는 공백일 수 없습니다.
27+
| `400 Bad Request`
28+
29+
| `2002`
30+
| 메시지 내용 사이즈 초과입니다 message={%s}
31+
| 메시지 내용은 500자 까지만 가능합니다.
32+
| `400 Bad Request`
33+
34+
| `2003`
35+
| 해당 회원은 작성자가 아닙니다. id={%d}
36+
| 해당 글의 작성자가 아닙니다.
37+
| `403 Forbidden.`
38+
|===
39+
40+
=== 유저 에러
41+
42+
|===
43+
| error code | error message | show message | status code
44+
45+
| `3001`
46+
| 이메일은 공백일 수 없습니다.
47+
| 이메일은 공백일 수 없습니다.
48+
| `400 Bad Request`
49+
50+
| `3002`
51+
| 이메일 정규식에 위반되는 이메일입니다. email = {%s}
52+
| 유효하지 않은 이메일입니다.
53+
| `400 Bad Request`
54+
55+
| `3003`
56+
| 이미 이메일이 중복되는 회원이 존재합니다.
57+
| 이미 가입된 이메일입니다.
58+
| `403 Forbidden.`
59+
60+
| `3004`
61+
| 유저네임은 공백일 수 없습니다
62+
| 유저네임은 공백일 수 없습니다
63+
| `400 Bad Request`
64+
65+
| `3005`
66+
| 유저네임은 2자 이상 20자 이하여야 합니다. username={%s}
67+
| 유저네임은 2자 이상 20자 이하여야 합니다.
68+
| `400 Bad Request`
69+
70+
| `3006`
71+
| 올바르지 않은 username입니다. username={%s}
72+
| 유저네임은 영어, 한국어, 숫자로 구성해야 합니다.
73+
| `400 Bad Request`
74+
75+
| `3007`
76+
| 비밀번호는 공백일 수 없습니다.
77+
| 비밀번호는 공백일 수 없습니다.
78+
| `400 Bad Request`
79+
80+
| `3008`
81+
| 비밀번호는 8자 이상 20자 이하여야 합니다. password={%s}
82+
| 해당 글의 작성자가 아닙니다.
83+
| `400 Bad Request`
84+
85+
| `3009`
86+
| 비밀번호는 최소 하나 이상의 알파벳과 숫자로 구성해야 합니다. password={%s}
87+
| 비밀번호는 최소 하나 이상의 알파벳과 숫자로 구성해야 합니다.
88+
| `400 Bad Request`
89+
90+
| `3010`
91+
| 이메일 정규식에 위반되는 이메일입니다. email = {%s}
92+
| 이메일 또는 비밀번호가 일치하지 않습니다.
93+
| `401 Unauthorized`
94+
95+
| `3011`
96+
| 올바르지 않은 토큰입니다.
97+
| 올바르지 않은 토큰입니다.
98+
| `401 Unauthorized`
99+
100+
| `3012`
101+
| 토큰의 유효기간이 만료됐습니다.
102+
| 토큰의 유효기간이 만료됐습니다.
103+
| `401 Unauthorized`
104+
105+
| `3013`
106+
| 토큰의 secret key가 변조됐습니다. 해킹의 우려가 존재합니다. token={%s}
107+
| 토큰의 secret key가 변조됐습니다. 해킹의 우려가 존재합니다.
108+
| `401 Unauthorized`
109+
|===
110+
111+
=== 모임 에러
112+
|===
113+
| error code | error message | show message | status code
114+
115+
| `4001`
116+
| 모임 이름은 공백일 수 없습니다.
117+
| 모임 이름은 공백일 수 없습니다.
118+
| `400 Bad Request`
119+
120+
| `4002`
121+
| 모임 이름은 20자 이하여야 합니다. name={%s}
122+
| 모임 이름은 20자 이하여야 합니다.
123+
| `400 Bad Request`
124+
125+
| `4003`
126+
| 모임 설명은 공백일 수 없습니다.
127+
| 모임 설명은 공백일 수 없습니다.
128+
| `400 Bad Request`
129+
130+
| `4004`
131+
| 모임 설명은 100자 이하여야 합니다. description={%s}
132+
| 모임 설명은 100자 이하여야 합니다.
133+
| `400 Bad Request`
134+
135+
| `4005`
136+
| 이모지가 선택되지 않았습니다.
137+
| 이모지가 선택되지 않았습니다.
138+
| `400 Bad Request`
139+
140+
| `4006`
141+
| 색상이 선택되지 않았습니다.
142+
| 색상이 선택되지 않았습니다.
143+
| `400 Bad Request`
144+
145+
| `4007`
146+
| 이미 가입된 모임입니다. teamId={%d}, memberId={%d}
147+
| 이미 가입한 모임입니다.
148+
| `400 Bad Request`
149+
150+
| `4008`
151+
| 이미 가입돼있는 회원입니다.
152+
| 이미 가입돼있는 회원입니다.
153+
| `400 Bad Request`
154+
155+
| `4009`
156+
| 닉네임은 공백일 수 없습니다.
157+
| 닉네임은 공백일 수 없습니다.
158+
| `400 Bad Request`
159+
160+
| `4010`
161+
| 닉네임 글자 수 초과 nickname={%s}
162+
| 닉네임은 20자 이하여야 합니다.
163+
| `400 Bad Request`
164+
165+
| `4011`
166+
| 이미 존재하는 모임 이름입니다. teamName={%s}
167+
| 이미 존재하는 모임 이름입니다.
168+
| `400 Bad Request`
169+
170+
| `4012`
171+
| 해당 모임에 가입되지 않은 회원입니다. memberId={%d}
172+
| 해당 모임에 가입되지 않은 회원입니다.
173+
| `404 Not Found`
174+
175+
| `4013`
176+
| 해당 모임에 가입해야 가능한 작업입니다. teamId={%d}, memberId={%d}
177+
| 해당 모임에 가입해야 가능한 작업입니다.
178+
| `403 Forbidden`
179+
|===

backend/src/docs/asciidoc/index.adoc

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
= NAEPYEON(내편) Application API Document
2+
:doctype: book
3+
:icons: font
4+
:source-highlighter: highlightjs
5+
:toc: left
6+
:toclevels: 2
7+
:sectlinks:
8+
9+
include::auth.adoc[]
10+
include::members.adoc[]
11+
include::teams.adoc[]
12+
include::rollingpapers.adoc[]
13+
include::messages.adoc[]
14+
include::errorCodes.adoc[]
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
== 유저
2+
3+
=== 내 정보 조회
4+
operation::member-controller-test/find-member[snippets='http-request,http-response']
5+
6+
=== 내가 받은 롤링페이퍼 목록
7+
operation::member-controller-test/find-received-rollingpapers[snippets='http-request,http-response']
8+
9+
=== 내가 작성한 메시지 목록
10+
operation::member-controller-test/find-written-messages[snippets='http-request,http-response']
11+
12+
=== 내 정보 수정
13+
operation::member-controller-test/update-member[snippets='http-request,http-response']
14+
15+
=== 회원탈퇴
16+
operation::member-controller-test/delete-member[snippets='http-request,http-response']
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
== 메시지
2+
3+
=== 메시지 생성
4+
operation::message-controller-test/create-message[snippets='http-request,http-response']
5+
6+
=== 메시지 상세 조회
7+
operation::message-controller-test/find-message[snippets='http-request,http-response']
8+
9+
=== 메시지 수정
10+
operation::message-controller-test/update-message[snippets='http-request,http-response']
11+
12+
=== 메시지 삭제
13+
operation::message-controller-test/delete-message[snippets='http-request,http-response']
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
== 롤링페이퍼
2+
3+
=== 롤링페이퍼 생성
4+
operation::rollingpaper-controller-test/create-rollingpaper[snippets='http-request,http-response']
5+
6+
=== 롤링페이퍼 단건 조회
7+
operation::rollingpaper-controller-test/find-rollingpaper-by-id[snippets='http-request,http-response']
8+
9+
=== 모임 내 롤링페이퍼 목록 조회
10+
operation::rollingpaper-controller-test/find-rollingpapers-by-team-id[snippets='http-request,http-response']
11+
12+
=== 모임에서 받은 내 롤링페이퍼들 조회
13+
operation::rollingpaper-controller-test/find-rollingpapers-by-member-id[snippets='http-request,http-response']
14+
15+
=== 롤링페이퍼 수정
16+
operation::rollingpaper-controller-test/update-rollingpaper[snippets='http-request,http-response']

backend/src/docs/asciidoc/teams.adoc

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
== 모임
2+
3+
=== 모임 단건 조회
4+
operation::team-controller-test/get-team[snippets='http-request,http-response']
5+
6+
=== 참여중인 모임들 조회
7+
operation::team-controller-test/get-joined-teams[snippets='http-request,http-response']
8+
9+
=== 모든 모임 조회
10+
operation::team-controller-test/get-all-teams[snippets='http-request,http-response']
11+
12+
=== 키워드에 맞는 모든 모임 조회
13+
operation::team-controller-test/get-all-teams-by-keyword[snippets='http-request,http-response']
14+
15+
=== 모임에 참여중인 회원정보
16+
operation::team-controller-test/get-joined-members[snippets='http-request,http-response']
17+
18+
=== 모임 생성
19+
operation::team-controller-test/create-team/[snippets='http-request,http-response']
20+
21+
=== 모임 정보 수정
22+
operation::team-controller-test/update-team[snippets='http-request,http-response']
23+
24+
=== 모임에 회원 참가
25+
operation::team-controller-test/join-member[snippets='http-request,http-response']
26+
27+
=== 모임에 내 정보 조회
28+
operation::team-controller-test/get-my-info-in-team[snippets='http-request,http-response']
29+
30+
=== 모임에서 내 정보 수정
31+
operation::team-controller-test/update-my-info[snippets='http-request,http-response']

backend/src/main/java/com/woowacourse/naepyeon/config/AuthenticationPrincipalConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class AuthenticationPrincipalConfig implements WebMvcConfigurer {
2020
public void addInterceptors(final InterceptorRegistry registry) {
2121
registry.addInterceptor(new LoginInterceptor(jwtTokenProvider))
2222
.addPathPatterns("/api/v1/**")
23-
.excludePathPatterns("/api/v1/login")
23+
.excludePathPatterns("/api/v1/oauth/**")
2424
.excludePathPatterns("/api/v1/members");
2525
}
2626

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.woowacourse.naepyeon.config;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
5+
6+
@Configuration
7+
@EnableJpaAuditing
8+
public class JpaAuditingConfig {
9+
}

0 commit comments

Comments
 (0)