Skip to content

Commit 38ccab4

Browse files
authored
Merge pull request #559 from woowacourse-teams/dev
feat: main v1.1.0 배포한다.
2 parents 44551cf + 310a651 commit 38ccab4

File tree

231 files changed

+8129
-4358
lines changed

Some content is hidden

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

231 files changed

+8129
-4358
lines changed

backend/build.gradle

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,46 +20,52 @@ ext {
2020
}
2121

2222
dependencies {
23-
//spring
23+
// Spring
2424
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
2525
implementation 'org.springframework.boot:spring-boot-starter-validation'
2626
implementation 'org.springframework.boot:spring-boot-starter-web'
27+
implementation 'org.springframework.boot:spring-boot-starter-webflux'
2728

2829
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
29-
implementation 'org.projectlombok:lombok:1.18.18'
3030

3131
// Security
3232
implementation 'org.springframework.boot:spring-boot-starter-security'
3333
testImplementation 'org.springframework.security:spring-security-test'
3434

35-
//database
35+
// Database
3636
runtimeOnly 'mysql:mysql-connector-java'
3737
runtimeOnly 'com.h2database:h2'
38-
//flyway
38+
39+
// Flyway
3940
implementation 'org.flywaydb:flyway-core:6.4.2'
4041

42+
// Test
4143
testImplementation 'io.rest-assured:rest-assured:3.3.0'
4244
testImplementation 'org.springframework.boot:spring-boot-starter-test'
4345

44-
//restdocs
46+
// Restdocs
4547
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor'
4648
testImplementation 'org.springframework.restdocs:spring-restdocs-restassured'
4749

48-
//jwt
50+
// Jwt
4951
implementation 'io.jsonwebtoken:jjwt:0.9.1'
5052

51-
//svg
53+
// SvgToPng
5254
implementation 'org.apache.xmlgraphics:batik-all:1.12'
5355
implementation 'org.apache.xmlgraphics:xmlgraphics-commons:2.4'
5456
implementation 'xml-apis:xml-apis:1.4.01'
5557
implementation 'xml-apis:xml-apis-ext:1.3.04'
5658

57-
//cryptor
59+
// Cryptor
5860
implementation 'commons-codec:commons-codec:1.15'
5961

60-
// lombok
62+
// Lombok
6163
compileOnly 'org.projectlombok:lombok'
6264
annotationProcessor 'org.projectlombok:lombok'
65+
66+
// Mock Web Server
67+
testImplementation 'com.squareup.okhttp3:okhttp:4.0.1'
68+
testImplementation 'com.squareup.okhttp3:mockwebserver:4.0.1'
6369
}
6470

6571
test {
@@ -105,7 +111,7 @@ jacocoTestCoverageVerification {
105111
excludes = ["**.exception.**", "**.ControllerAdvice", "**.*ErrorResponse", "**.ValidatorMessage",
106112
"**.ZzimkkongApplication", "**.*TimeConverter", "**.DataLoader", "**.*Config",
107113
"**.LoginInterceptor", "**.AuthenticationPrincipalArgumentResolver",
108-
"**.slack.**", "**.Slack*"]
114+
"**.slack.**", "**.Slack*", "**.datasource.**"]
109115
//todo: 패키지 분리하면 더 멋있게 해보겠슴,,
110116

111117
limit {
@@ -139,6 +145,6 @@ sonarqube {
139145
property 'sonar.coverage.jacoco.xmlReportPaths', 'build/reports/jacoco/test/jacocoTestReport.xml'
140146
property 'sonar.java.binaries', 'build/classes'
141147
property 'sonar.test.inclusions', '**/*Test.java'
142-
property 'sonar.exclusions', '**/*Doc*.java, **/resources/**'
148+
property 'sonar.exclusions', '**/*Doc*.java, **/resources/**, **/config/datasource/**'
143149
}
144150
}

backend/src/docs/asciidoc/member.adoc

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,57 @@ include::{snippets}/member/token/success/http-request.adoc[]
2525
include::{snippets}/member/token/success/http-response.adoc[]
2626
==== Fail Response
2727
include::{snippets}/member/token/fail/http-response.adoc[]
28+
29+
=== 멤버 구글 이메일 반환
30+
==== Request
31+
include::{snippets}/member/get/oauth/GOOGLE/http-request.adoc[]
32+
==== Response
33+
include::{snippets}/member/get/oauth/GOOGLE/http-response.adoc[]
34+
35+
=== 멤버 깃헙 이메일 반환
36+
==== Request
37+
include::{snippets}/member/get/oauth/GITHUB/http-request.adoc[]
38+
==== Response
39+
include::{snippets}/member/get/oauth/GITHUB/http-response.adoc[]
40+
41+
=== 멤버 구글 회원가입
42+
==== Request
43+
include::{snippets}/member/post/oauth/GOOGLE/http-request.adoc[]
44+
==== Response
45+
include::{snippets}/member/post/oauth/GOOGLE/http-response.adoc[]
46+
47+
=== 멤버 깃헙 회원가입
48+
==== Request
49+
include::{snippets}/member/post/oauth/GITHUB/http-request.adoc[]
50+
==== Response
51+
include::{snippets}/member/post/oauth/GITHUB/http-response.adoc[]
52+
53+
=== 멤버 구글 로그인
54+
==== Request
55+
include::{snippets}/member/login/oauth/GOOGLE/http-request.adoc[]
56+
==== Response
57+
include::{snippets}/member/login/oauth/GOOGLE/http-response.adoc[]
58+
59+
=== 멤버 깃헙 로그인
60+
==== Request
61+
include::{snippets}/member/login/oauth/GITHUB/http-request.adoc[]
62+
==== Response
63+
include::{snippets}/member/login/oauth/GITHUB/http-response.adoc[]
64+
65+
=== 멤버 정보 조회
66+
==== Request
67+
include::{snippets}/member/myinfo/get/http-request.adoc[]
68+
==== Response
69+
include::{snippets}/member/myinfo/get/http-response.adoc[]
70+
71+
=== 멤버 정보 수정
72+
==== Request
73+
include::{snippets}/member/myinfo/put/http-request.adoc[]
74+
==== Response
75+
include::{snippets}/member/myinfo/put/http-response.adoc[]
76+
77+
=== 회원 탈퇴
78+
==== Request
79+
include::{snippets}/member/myinfo/delete/http-request.adoc[]
80+
==== Response
81+
include::{snippets}/member/myinfo/delete/http-response.adoc[]

backend/src/main/java/com/woowacourse/zzimkkong/DataLoader.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ public void run(String... args) {
3939
String meetingRoomColor = "#FFE3AC";
4040

4141
Member pobi = members.save(
42-
new Member("[email protected]", "test1234", "woowacourse")
42+
new Member("[email protected]",
43+
"$2a$10$c3BysogWR4hnexYx60/r/e3lEUIbSs4zhW6kuX4UW733MW5/NmbW.", // test1234 입니다.
44+
"woowacourse")
4345
);
4446

4547
Map luther = maps.save(
@@ -51,13 +53,13 @@ public void run(String... args) {
5153
);
5254

5355
Setting defaultSetting = Setting.builder()
54-
.availableStartTime(LocalTime.of(0, 0))
55-
.availableEndTime(LocalTime.of(23, 59))
56+
.availableStartTime(LocalTime.of(9, 0))
57+
.availableEndTime(LocalTime.of(22, 00))
5658
.reservationTimeUnit(10)
5759
.reservationMinimumTimeUnit(10)
58-
.reservationMaximumTimeUnit(1440)
60+
.reservationMaximumTimeUnit(700)
5961
.reservationEnable(true)
60-
.enabledDayOfWeek(null)
62+
.enabledDayOfWeek("monday,tuesday,wednesday,thursday,friday,saturday,sunday")
6163
.build();
6264

6365
Space be = Space.builder()
@@ -175,6 +177,7 @@ public void run(String... args) {
175177
Reservation reservationBackEndTargetDate0To1 = Reservation.builder()
176178
.startTime(targetDate.atStartOfDay())
177179
.endTime(targetDate.atTime(1, 0, 0))
180+
.date(targetDate)
178181
.description("찜꽁 1차 회의")
179182
.userName("찜꽁")
180183
.password("1234")
@@ -184,6 +187,7 @@ public void run(String... args) {
184187
Reservation reservationBackEndTargetDate13To14 = Reservation.builder()
185188
.startTime(targetDate.atTime(13, 0, 0))
186189
.endTime(targetDate.atTime(14, 0, 0))
190+
.date(targetDate)
187191
.description("찜꽁 2차 회의")
188192
.userName("찜꽁")
189193
.password("1234")
@@ -193,6 +197,7 @@ public void run(String... args) {
193197
Reservation reservationBackEndTargetDate18To23 = Reservation.builder()
194198
.startTime(targetDate.atTime(18, 0, 0))
195199
.endTime(targetDate.atTime(23, 59, 59))
200+
.date(targetDate)
196201
.description("찜꽁 3차 회의")
197202
.userName("찜꽁")
198203
.password("6789")
@@ -202,6 +207,7 @@ public void run(String... args) {
202207
Reservation reservationBackEndTheDayAfterTargetDate = Reservation.builder()
203208
.startTime(targetDate.plusDays(1L).atStartOfDay())
204209
.endTime(targetDate.plusDays(1L).atTime(1, 0, 0))
210+
.date(targetDate)
205211
.description("찜꽁 4차 회의")
206212
.userName("찜꽁")
207213
.password("1234")
@@ -211,6 +217,7 @@ public void run(String... args) {
211217
Reservation reservationFrontEnd1TargetDate0to1 = Reservation.builder()
212218
.startTime(targetDate.atStartOfDay())
213219
.endTime(targetDate.atTime(1, 0, 0))
220+
.date(targetDate)
214221
.description("찜꽁 5차 회의")
215222
.userName("찜꽁")
216223
.password("1234")

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,29 @@ public void addArgumentResolvers(List argumentResolvers) {
2626
@Override
2727
public void addInterceptors(InterceptorRegistry registry) {
2828
List<String> pathsToAdd = List.of(
29-
"/api/members/token",
29+
"/api/managers/token",
3030
"/api/managers/**"
3131
);
3232

33+
List<String> pathsToExclude = List.of(
34+
//manager join
35+
"/api/managers",
36+
"/api/managers/GOOGLE",
37+
"/api/managers/GITHUB",
38+
"/api/managers/google",
39+
"/api/managers/github",
40+
"/api/managers/oauth",
41+
42+
//manager login
43+
"/api/managers/login/token",
44+
"/api/managers/GOOGLE/login/token",
45+
"/api/managers/GITHUB/login/token",
46+
"/api/managers/google/login/token",
47+
"/api/managers/github/login/token"
48+
);
49+
3350
registry.addInterceptor(loginInterceptor)
34-
.addPathPatterns(pathsToAdd);
51+
.addPathPatterns(pathsToAdd)
52+
.excludePathPatterns(pathsToExclude);
3553
}
3654
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.woowacourse.zzimkkong.config;
2+
3+
import com.woowacourse.zzimkkong.infrastructure.oauth.StringToOauthProviderConverter;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.format.FormatterRegistry;
6+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7+
8+
@Configuration
9+
public class OauthConfig implements WebMvcConfigurer {
10+
@Override
11+
public void addFormatters(FormatterRegistry registry) {
12+
registry.addConverter(new StringToOauthProviderConverter());
13+
}
14+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.woowacourse.zzimkkong.config;
2+
3+
import com.woowacourse.zzimkkong.infrastructure.oauth.GithubRequester;
4+
import org.springframework.beans.factory.annotation.Value;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.context.annotation.Profile;
8+
import org.springframework.context.annotation.PropertySource;
9+
10+
@Configuration
11+
@PropertySource("classpath:config/oauth.properties")
12+
public class OauthGithubConfig {
13+
@Bean(name = "githubRequester")
14+
@Profile({"prod"})
15+
public GithubRequester githubRequesterProd(
16+
@Value("${github.client-id.prod}") final String clientId,
17+
@Value("${github.secret-id.prod}") final String secretId,
18+
@Value("${github.url.oauth-login}") final String githubOauthUrl,
19+
@Value("${github.url.open-api}") final String githubOpenApiUrl) {
20+
return new GithubRequester(clientId, secretId, githubOauthUrl, githubOpenApiUrl);
21+
}
22+
23+
@Bean(name = "githubRequester")
24+
@Profile({"dev"})
25+
public GithubRequester githubRequesterDev(
26+
@Value("${github.client-id.dev}") final String clientId,
27+
@Value("${github.secret-id.dev}") final String secretId,
28+
@Value("${github.url.oauth-login}") final String githubOauthUrl,
29+
@Value("${github.url.open-api}") final String githubOpenApiUrl) {
30+
return new GithubRequester(clientId, secretId, githubOauthUrl, githubOpenApiUrl);
31+
}
32+
33+
@Bean(name = "githubRequester")
34+
@Profile({"local", "test"})
35+
public GithubRequester githubRequesterLocalTest(
36+
@Value("${github.client-id.local}") final String clientId,
37+
@Value("${github.secret-id.local}") final String secretId,
38+
@Value("${github.url.oauth-login}") final String githubOauthUrl,
39+
@Value("${github.url.open-api}") final String githubOpenApiUrl) {
40+
return new GithubRequester(clientId, secretId, githubOauthUrl, githubOpenApiUrl);
41+
}
42+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.woowacourse.zzimkkong.config.datasource;
2+
3+
import java.util.List;
4+
5+
public class CircularList<T> {
6+
private final List<T> list;
7+
private Integer counter = 0;
8+
9+
public CircularList(List<T> list) {
10+
this.list = list;
11+
}
12+
13+
public T getOne() {
14+
if (counter + 1 >= list.size()) {
15+
counter = -1;
16+
}
17+
return list.get(++counter);
18+
}
19+
}

0 commit comments

Comments
 (0)