From c1cb7045fd0e89371e46f11e851463f832eb3a20 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Mon, 3 Oct 2022 23:56:33 +0900 Subject: [PATCH 1/8] =?UTF-8?q?[#17]=20feat:=20=EB=A9=80=ED=8B=B0=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 인증 api 적용 전 기존 프로젝트 멀티프로젝트로 전환 - common(entity관련), service-api로 구성 --- build.gradle | 79 ---------------- build.gradle.kts | 93 +++++++++++++++++++ dongne-common/build.gradle.kts | 19 ++++ .../dongnecafe/common}/BaseTimeEntity.kt | 2 +- .../dongnecafe/domain/cafe/entity/Cafe.kt | 2 +- .../domain/cafe/entity/CafeImage.kt | 2 +- .../dongnecafe/domain/cafe/entity/CafeMenu.kt | 2 +- .../domain/cafe/entity/MenuOption.kt | 2 +- .../domain/cafe/entity/OptionDetail.kt | 2 +- .../request/CafeMenuBulkDeleteRequest.kt | 0 .../model/request/CafeMenuRegisterRequest.kt | 0 .../model/request/CafeMenuUpdateRequest.kt | 0 .../cafe/model/request/CafeRegisterRequest.kt | 0 .../cafe/model/request/CafeUpdateRequest.kt | 0 .../request/MenuOptionRegisterRequest.kt | 0 .../model/request/MenuOptionUpdateRequest.kt | 0 .../cafe/model/response/CafeDetailedInfo.kt | 0 .../cafe/model/response/CafeImageInfo.kt | 0 .../model/response/CafeMenuDetailedInfo.kt | 0 .../cafe/model/response/CafeMenuInfo.kt | 0 .../cafe/model/response/CafeSearchInfo.kt | 0 .../cafe/model/response/MenuOptionInfo.kt | 0 .../cafe/model/response/OptionDetailInfo.kt | 0 .../cafe/repository/CafeMenuRepository.kt | 0 .../domain/cafe/repository/CafeRepository.kt | 0 .../cafe/repository/MenuOptionRepository.kt | 0 .../cafe/repository/OptionDetailRepository.kt | 0 dongne-service-api/build.gradle.kts | 3 + .../dongnecafe/DongneServiceApiApplication.kt | 4 +- .../common/config/AuditingConfig.kt | 0 .../common/entity/BaseEntityAuditorAware.kt | 0 .../domain/cafe/controller/CafeController.kt | 0 .../cafe/controller/CafeMenuController.kt | 0 .../domain/cafe/error/CafeExceptionHandler.kt | 0 .../domain/cafe/error/CafeExistedException.kt | 0 .../cafe/error/CafeMenuNotFoundException.kt | 0 .../cafe/error/CafeNotFoundException.kt | 0 .../cafe/error/MenuOptionNotFoundException.kt | 0 .../error/OptionDetailNotFoundException.kt | 0 .../domain/cafe/service/CafeMenuService.kt | 0 .../domain/cafe/service/CafeService.kt | 0 .../domain/cafe/service/MenuOptionService.kt | 0 .../cafe/service/OptionDetailService.kt | 0 .../src}/main/resources/application-local.yml | 0 .../src}/main/resources/application.yml | 0 .../V1__Delete_all_tables_if_exists.sql | 0 .../db/migration/V2__Create_cafe.sql | 0 .../db/migration/V3__Create_cafe_menu.sql | 0 .../db/migration/V4__Create_cafe_image.sql | 0 .../db/migration/V5__Create_menu_option.sql | 0 .../db/migration/V6__Create_option_detail.sql | 0 .../migration/V7__Alter_all_tables_pk_fk.sql | 0 .../resources/db/seed/R__Insert_Seed_cafe.sql | 0 .../db/seed/R__Insert_Seed_cafe_image.sql | 0 .../db/seed/R__Insert_Seed_cafe_menu.sql | 0 .../db/seed/R__Insert_Seed_menu_option.sql | 0 .../db/seed/R__Insert_Seed_option_detail.sql | 0 .../DongneCafeServiceApiApplicationTests.kt | 2 +- .../dongnecafe/domain/cafe/entity/CafeTest.kt | 0 .../cafe/repository/CafeRepositoryTest.kt | 0 .../service/CafeMenuServiceIntegratedTest.kt | 4 +- .../cafe/service/CafeMenuServiceTest.kt | 0 .../domain/cafe/service/CafeServiceTest.kt | 0 .../domain/cafe/utils/CafeMenuTestUtils.kt | 0 .../domain/cafe/utils/CafeTestUtils.kt | 7 -- .../src}/test/resources/application.yml | 0 settings.gradle | 1 - settings.gradle.kts | 3 + 68 files changed, 130 insertions(+), 97 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 dongne-common/build.gradle.kts rename {src/main/java/io/beaniejoy/dongnecafe/common/entity => dongne-common/src/main/java/io/beaniejoy/dongnecafe/common}/BaseTimeEntity.kt (94%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt (97%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt (88%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt (97%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt (96%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt (95%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt (100%) rename {src => dongne-common/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt (100%) create mode 100644 dongne-service-api/build.gradle.kts rename src/main/java/io/beaniejoy/dongnecafe/DongneCafeApiApplication.kt => dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt (67%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt (100%) rename {src => dongne-service-api/src}/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt (100%) rename {src => dongne-service-api/src}/main/resources/application-local.yml (100%) rename {src => dongne-service-api/src}/main/resources/application.yml (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V2__Create_cafe.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V3__Create_cafe_menu.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V4__Create_cafe_image.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V5__Create_menu_option.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V6__Create_option_detail.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/seed/R__Insert_Seed_cafe.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/seed/R__Insert_Seed_cafe_image.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/seed/R__Insert_Seed_menu_option.sql (100%) rename {src => dongne-service-api/src}/main/resources/db/seed/R__Insert_Seed_option_detail.sql (100%) rename src/test/java/io/beaniejoy/dongnecafe/DongneCafeSirenOrderApplicationTests.kt => dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt (77%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt (100%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt (100%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt (90%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt (100%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt (100%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt (100%) rename {src => dongne-service-api/src}/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt (78%) rename {src => dongne-service-api/src}/test/resources/application.yml (100%) delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 0352f7f..0000000 --- a/build.gradle +++ /dev/null @@ -1,79 +0,0 @@ -buildscript { - ext { - springBootVersion = '2.7.0' - dependencyManagementVersion = '1.0.11.RELEASE' - kotlinVersion = '1.6.21' - flywayVersion = '7.15.0' - } - repositories { - mavenCentral() - } - dependencies { - classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}" - classpath "io.spring.gradle:dependency-management-plugin:${dependencyManagementVersion}" - - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}" - classpath "org.jetbrains.kotlin:kotlin-noarg:${kotlinVersion}" - classpath "org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}" - } -} - -apply plugin: 'kotlin' -apply plugin: 'kotlin-spring' -apply plugin: "kotlin-jpa" -apply plugin: "kotlin-noarg" -apply plugin: "kotlin-allopen" -apply plugin: 'java' -apply plugin: 'org.springframework.boot' -apply plugin: 'io.spring.dependency-management' - -group = 'io.beaniejoy.dongecafe' -version = '0.0.1-SNAPSHOT' -sourceCompatibility = '17' - -repositories { - mavenCentral() -} - -allOpen { - annotation("javax.persistence.Entity") - annotation("javax.persistence.MappedSuperclass") - annotation("javax.persistence.Embeddable") -} - -dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}") - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}") - implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - - implementation('io.github.microutils:kotlin-logging:2.1.21') - - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-validation' - implementation 'org.springframework.boot:spring-boot-starter-web' - - // log4j2 -// implementation 'org.springframework.boot:spring-boot-starter-log4j2' -// testImplementation 'org.springframework.boot:spring-boot-starter-log4j2' - - developmentOnly 'org.springframework.boot:spring-boot-devtools' - - runtimeOnly 'mysql:mysql-connector-java' // MySQL - runtimeOnly 'com.h2database:h2' // H2 - - implementation "org.flywaydb:flyway-core:${flywayVersion}" // flyway - - testImplementation 'org.springframework.boot:spring-boot-starter-test' -} - -//configurations { -// all { -// // log4j2 적용을 위해 기존 spring boot에서 제공하는 logging exclude -// exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' -// } -//} - -test { - useJUnitPlatform() -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..379dfe2 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,93 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +buildscript { + repositories { + mavenCentral() + } +} + +plugins { + id("org.springframework.boot") version "2.7.0" + id("io.spring.dependency-management") version "1.0.11.RELEASE" + kotlin("jvm") version "1.6.21" + kotlin("plugin.spring") version "1.6.21" apply false + kotlin("plugin.jpa") version "1.6.21" apply false +} + +java.sourceCompatibility = JavaVersion.VERSION_17 + +allprojects { + group = "io.beaniejoy.dongecafe" + version = "0.0.1-SNAPSHOT" + + repositories { + mavenCentral() + } +} + +subprojects { + apply(plugin = "java") + + apply(plugin = "io.spring.dependency-management") + apply(plugin = "org.springframework.boot") + apply(plugin = "org.jetbrains.kotlin.plugin.spring") + + apply(plugin = "kotlin") + apply(plugin = "kotlin-spring") + apply(plugin = "kotlin-jpa") + + repositories { + mavenCentral() + } + +// configurations { +// all { +// // log4j2 적용을 위해 기존 spring boot에서 제공하는 logging exclude +// exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' +// } +// } + + dependencies { + // Spring Boot Project + implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.boot:spring-boot-starter-validation") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + developmentOnly("org.springframework.boot:spring-boot-devtools") + + //kotlin + implementation("org.jetbrains.kotlin:kotlin-reflect") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + // DB + runtimeOnly("mysql:mysql-connector-java") // MySQL + runtimeOnly("com.h2database:h2") // H2 + + // Logging + // log4j2 + // implementation("org.springframework.boot:spring-boot-starter-log4j2") + // testImplementation("org.springframework.boot:spring-boot-starter-log4j2") + implementation("io.github.microutils:kotlin-logging:2.1.21") + + implementation("org.flywaydb:flyway-core:7.15.0") // flyway + + // Test + testImplementation("org.springframework.boot:spring-boot-starter-test") + } + + tasks.withType { + sourceCompatibility = "17" + targetCompatibility = "17" + } + + tasks.withType { + kotlinOptions { + freeCompilerArgs = listOf("-Xjsr305=strict") + jvmTarget = "17" + } + } + + tasks.withType { + useJUnitPlatform() + } +} \ No newline at end of file diff --git a/dongne-common/build.gradle.kts b/dongne-common/build.gradle.kts new file mode 100644 index 0000000..8324f5a --- /dev/null +++ b/dongne-common/build.gradle.kts @@ -0,0 +1,19 @@ +import org.springframework.boot.gradle.tasks.bundling.BootJar + +val jar: Jar by tasks +val bootJar: BootJar by tasks + +bootJar.enabled = false +jar.enabled = true + +allOpen { + annotation("javax.persistence.Entity") + annotation("javax.persistence.Embeddable") + annotation("javax.persistence.MappedSuperclass") +} + +noArg { + annotation("javax.persistence.Entity") + annotation("javax.persistence.Embeddable") + annotation("javax.persistence.MappedSuperclass") +} \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseTimeEntity.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt similarity index 94% rename from src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseTimeEntity.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt index bc366e1..b5c4ab1 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseTimeEntity.kt +++ b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt @@ -1,4 +1,4 @@ -package io.beaniejoy.dongnecafe.common.entity +package io.beaniejoy.dongnecafe.common import org.springframework.data.annotation.CreatedBy import org.springframework.data.annotation.CreatedDate diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt similarity index 97% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt index c3a11b2..7196bfe 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt +++ b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt @@ -1,6 +1,6 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity -import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity +import io.beaniejoy.dongnecafe.common.BaseTimeEntity import io.beaniejoy.dongnecafe.domain.cafe.model.request.CafeMenuRegisterRequest import javax.persistence.* diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt similarity index 88% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt index e90c349..22a0a8c 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt +++ b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt @@ -1,6 +1,6 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity -import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity +import io.beaniejoy.dongnecafe.common.BaseTimeEntity import javax.persistence.* @Entity diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt similarity index 97% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt index 92b8299..d2b4bcb 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt +++ b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt @@ -1,6 +1,6 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity -import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity +import io.beaniejoy.dongnecafe.common.BaseTimeEntity import io.beaniejoy.dongnecafe.domain.cafe.model.request.MenuOptionRegisterRequest import java.math.BigDecimal import javax.persistence.* diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt similarity index 96% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt index e63795a..8072dbd 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt +++ b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt @@ -1,6 +1,6 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity -import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity +import io.beaniejoy.dongnecafe.common.BaseTimeEntity import io.beaniejoy.dongnecafe.domain.cafe.model.request.OptionDetailRegisterRequest import javax.persistence.* diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt similarity index 95% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt index 6bf8b70..a97c7c4 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt +++ b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt @@ -1,6 +1,6 @@ package io.beaniejoy.dongnecafe.domain.cafe.entity -import io.beaniejoy.dongnecafe.common.entity.BaseTimeEntity +import io.beaniejoy.dongnecafe.common.BaseTimeEntity import java.math.BigDecimal import javax.persistence.* diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt b/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt rename to dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt diff --git a/dongne-service-api/build.gradle.kts b/dongne-service-api/build.gradle.kts new file mode 100644 index 0000000..ea96773 --- /dev/null +++ b/dongne-service-api/build.gradle.kts @@ -0,0 +1,3 @@ +dependencies { + implementation(project(":dongne-common")) +} \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/DongneCafeApiApplication.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt similarity index 67% rename from src/main/java/io/beaniejoy/dongnecafe/DongneCafeApiApplication.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt index afefa48..b4f74ba 100644 --- a/src/main/java/io/beaniejoy/dongnecafe/DongneCafeApiApplication.kt +++ b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt @@ -4,8 +4,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication -class DongneCafeApiApplication +class DongneCafeServiceApiApplication fun main(args: Array) { - runApplication(*args) + runApplication(*args) } \ No newline at end of file diff --git a/src/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt diff --git a/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt b/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt similarity index 100% rename from src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt rename to dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt diff --git a/src/main/resources/application-local.yml b/dongne-service-api/src/main/resources/application-local.yml similarity index 100% rename from src/main/resources/application-local.yml rename to dongne-service-api/src/main/resources/application-local.yml diff --git a/src/main/resources/application.yml b/dongne-service-api/src/main/resources/application.yml similarity index 100% rename from src/main/resources/application.yml rename to dongne-service-api/src/main/resources/application.yml diff --git a/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql b/dongne-service-api/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql similarity index 100% rename from src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql rename to dongne-service-api/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql diff --git a/src/main/resources/db/migration/V2__Create_cafe.sql b/dongne-service-api/src/main/resources/db/migration/V2__Create_cafe.sql similarity index 100% rename from src/main/resources/db/migration/V2__Create_cafe.sql rename to dongne-service-api/src/main/resources/db/migration/V2__Create_cafe.sql diff --git a/src/main/resources/db/migration/V3__Create_cafe_menu.sql b/dongne-service-api/src/main/resources/db/migration/V3__Create_cafe_menu.sql similarity index 100% rename from src/main/resources/db/migration/V3__Create_cafe_menu.sql rename to dongne-service-api/src/main/resources/db/migration/V3__Create_cafe_menu.sql diff --git a/src/main/resources/db/migration/V4__Create_cafe_image.sql b/dongne-service-api/src/main/resources/db/migration/V4__Create_cafe_image.sql similarity index 100% rename from src/main/resources/db/migration/V4__Create_cafe_image.sql rename to dongne-service-api/src/main/resources/db/migration/V4__Create_cafe_image.sql diff --git a/src/main/resources/db/migration/V5__Create_menu_option.sql b/dongne-service-api/src/main/resources/db/migration/V5__Create_menu_option.sql similarity index 100% rename from src/main/resources/db/migration/V5__Create_menu_option.sql rename to dongne-service-api/src/main/resources/db/migration/V5__Create_menu_option.sql diff --git a/src/main/resources/db/migration/V6__Create_option_detail.sql b/dongne-service-api/src/main/resources/db/migration/V6__Create_option_detail.sql similarity index 100% rename from src/main/resources/db/migration/V6__Create_option_detail.sql rename to dongne-service-api/src/main/resources/db/migration/V6__Create_option_detail.sql diff --git a/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql b/dongne-service-api/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql similarity index 100% rename from src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql rename to dongne-service-api/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql diff --git a/src/main/resources/db/seed/R__Insert_Seed_cafe.sql b/dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_cafe.sql similarity index 100% rename from src/main/resources/db/seed/R__Insert_Seed_cafe.sql rename to dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_cafe.sql diff --git a/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql b/dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql similarity index 100% rename from src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql rename to dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_cafe_image.sql diff --git a/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql b/dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql similarity index 100% rename from src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql rename to dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_cafe_menu.sql diff --git a/src/main/resources/db/seed/R__Insert_Seed_menu_option.sql b/dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_menu_option.sql similarity index 100% rename from src/main/resources/db/seed/R__Insert_Seed_menu_option.sql rename to dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_menu_option.sql diff --git a/src/main/resources/db/seed/R__Insert_Seed_option_detail.sql b/dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_option_detail.sql similarity index 100% rename from src/main/resources/db/seed/R__Insert_Seed_option_detail.sql rename to dongne-service-api/src/main/resources/db/seed/R__Insert_Seed_option_detail.sql diff --git a/src/test/java/io/beaniejoy/dongnecafe/DongneCafeSirenOrderApplicationTests.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt similarity index 77% rename from src/test/java/io/beaniejoy/dongnecafe/DongneCafeSirenOrderApplicationTests.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt index 7196f01..bdfac3c 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/DongneCafeSirenOrderApplicationTests.kt +++ b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test import org.springframework.boot.test.context.SpringBootTest @SpringBootTest -internal class DongneCafeSirenOrderApplicationTests { +internal class DongneCafeServiceApiApplicationTests { @Test fun contextLoads() { diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt similarity index 100% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt similarity index 100% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt similarity index 90% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt index 59b9b89..5746790 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt +++ b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt @@ -1,6 +1,8 @@ package io.beaniejoy.dongnecafe.domain.cafe.service -import io.beaniejoy.dongnecafe.domain.cafe.model.request.* +import io.beaniejoy.dongnecafe.domain.cafe.model.request.CafeMenuUpdateRequest +import io.beaniejoy.dongnecafe.domain.cafe.model.request.MenuOptionUpdateRequest +import io.beaniejoy.dongnecafe.domain.cafe.model.request.OptionDetailUpdateRequest import io.beaniejoy.dongnecafe.domain.cafe.utils.CafeTestUtils import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt similarity index 100% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt similarity index 100% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt similarity index 100% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt diff --git a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt similarity index 78% rename from src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt rename to dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt index 66d3d2a..449b7d2 100644 --- a/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt +++ b/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt @@ -1,15 +1,8 @@ package io.beaniejoy.dongnecafe.domain.cafe.utils import io.beaniejoy.dongnecafe.domain.cafe.model.request.CafeRegisterRequest -import io.beaniejoy.dongnecafe.domain.cafe.model.request.CafeMenuRegisterRequest -import io.beaniejoy.dongnecafe.domain.cafe.model.request.MenuOptionRegisterRequest -import io.beaniejoy.dongnecafe.domain.cafe.model.request.OptionDetailRegisterRequest import io.beaniejoy.dongnecafe.domain.cafe.entity.Cafe -import io.beaniejoy.dongnecafe.domain.cafe.entity.CafeMenu -import io.beaniejoy.dongnecafe.domain.cafe.entity.MenuOption -import io.beaniejoy.dongnecafe.domain.cafe.entity.OptionDetail import org.junit.jupiter.api.Assertions.* -import java.math.BigDecimal import javax.persistence.GeneratedValue class CafeTestUtils { diff --git a/src/test/resources/application.yml b/dongne-service-api/src/test/resources/application.yml similarity index 100% rename from src/test/resources/application.yml rename to dongne-service-api/src/test/resources/application.yml diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index b005d83..0000000 --- a/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'dongne-cafe-api' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..741ff6f --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,3 @@ +rootProject.name = "dongne-cafe-api" +include("dongne-common") +include("dongne-service-api") From 45136c7f9c6120b4713133c5ceee0a8527e0f0e9 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Tue, 4 Oct 2022 23:09:45 +0900 Subject: [PATCH 2/8] =?UTF-8?q?[#17]=20feat:=20=EB=A9=80=ED=8B=B0=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Repository common 영역으로 공통화 - gradle 설정 수정 - main class 이름 변경 - java -> kotlin 디렉토리명 변경 --- build.gradle.kts | 5 ---- dongne-account-api/build.gradle.kts | 3 +++ .../dongnecafe/DongneAccountApiApplication.kt | 11 ++++++++ .../src/main/resources/application-local.yml | 5 ++++ .../src/main/resources/application.yml | 27 +++++++++++++++++++ .../DongneAccountApiApplicationTests.kt | 2 +- .../dongnecafe/common/BaseTimeEntity.kt | 0 .../dongnecafe/domain/cafe/entity/Cafe.kt | 0 .../domain/cafe/entity/CafeImage.kt | 0 .../dongnecafe/domain/cafe/entity/CafeMenu.kt | 0 .../domain/cafe/entity/MenuOption.kt | 0 .../domain/cafe/entity/OptionDetail.kt | 0 .../request/CafeMenuBulkDeleteRequest.kt | 0 .../model/request/CafeMenuRegisterRequest.kt | 0 .../model/request/CafeMenuUpdateRequest.kt | 0 .../cafe/model/request/CafeRegisterRequest.kt | 0 .../cafe/model/request/CafeUpdateRequest.kt | 0 .../request/MenuOptionRegisterRequest.kt | 0 .../model/request/MenuOptionUpdateRequest.kt | 0 .../cafe/model/response/CafeDetailedInfo.kt | 0 .../cafe/model/response/CafeImageInfo.kt | 0 .../model/response/CafeMenuDetailedInfo.kt | 0 .../cafe/model/response/CafeMenuInfo.kt | 0 .../cafe/model/response/CafeSearchInfo.kt | 0 .../cafe/model/response/MenuOptionInfo.kt | 0 .../cafe/model/response/OptionDetailInfo.kt | 0 .../cafe/repository/CafeMenuRepository.kt | 0 .../domain/cafe/repository/CafeRepository.kt | 0 .../cafe/repository/MenuOptionRepository.kt | 0 .../cafe/repository/OptionDetailRepository.kt | 0 .../dongnecafe/DongneServiceApiApplication.kt | 4 +-- .../common/config/AuditingConfig.kt | 0 .../common/entity/BaseEntityAuditorAware.kt | 0 .../domain/cafe/controller/CafeController.kt | 0 .../cafe/controller/CafeMenuController.kt | 0 .../domain/cafe/error/CafeExceptionHandler.kt | 0 .../domain/cafe/error/CafeExistedException.kt | 0 .../cafe/error/CafeMenuNotFoundException.kt | 0 .../cafe/error/CafeNotFoundException.kt | 0 .../cafe/error/MenuOptionNotFoundException.kt | 0 .../error/OptionDetailNotFoundException.kt | 0 .../domain/cafe/service/CafeMenuService.kt | 0 .../domain/cafe/service/CafeService.kt | 0 .../domain/cafe/service/MenuOptionService.kt | 0 .../cafe/service/OptionDetailService.kt | 0 .../src/main/resources/application.yml | 3 +++ .../DongneServiceApiApplicationTests.kt | 12 +++++++++ .../dongnecafe/domain/cafe/entity/CafeTest.kt | 0 .../cafe/repository/CafeRepositoryTest.kt | 0 .../service/CafeMenuServiceIntegratedTest.kt | 0 .../cafe/service/CafeMenuServiceTest.kt | 0 .../domain/cafe/service/CafeServiceTest.kt | 4 +-- .../domain/cafe/utils/CafeMenuTestUtils.kt | 0 .../domain/cafe/utils/CafeTestUtils.kt | 0 settings.gradle.kts | 1 + 55 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 dongne-account-api/build.gradle.kts create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplication.kt create mode 100644 dongne-account-api/src/main/resources/application-local.yml create mode 100644 dongne-account-api/src/main/resources/application.yml rename dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt => dongne-account-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplicationTests.kt (77%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt (100%) rename dongne-common/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt (67%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt (100%) rename dongne-service-api/src/main/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt (100%) create mode 100644 dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplicationTests.kt rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt (100%) rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt (100%) rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt (100%) rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt (100%) rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt (97%) rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt (100%) rename dongne-service-api/src/test/{java => kotlin}/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 379dfe2..d7e81a5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,11 +75,6 @@ subprojects { testImplementation("org.springframework.boot:spring-boot-starter-test") } - tasks.withType { - sourceCompatibility = "17" - targetCompatibility = "17" - } - tasks.withType { kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") diff --git a/dongne-account-api/build.gradle.kts b/dongne-account-api/build.gradle.kts new file mode 100644 index 0000000..ea96773 --- /dev/null +++ b/dongne-account-api/build.gradle.kts @@ -0,0 +1,3 @@ +dependencies { + implementation(project(":dongne-common")) +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplication.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplication.kt new file mode 100644 index 0000000..a79a862 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplication.kt @@ -0,0 +1,11 @@ +package io.beaniejoy.dongnecafe + +import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.runApplication + +@SpringBootApplication +class DongneAccountApiApplication + +fun main(args: Array) { + runApplication(*args) +} \ No newline at end of file diff --git a/dongne-account-api/src/main/resources/application-local.yml b/dongne-account-api/src/main/resources/application-local.yml new file mode 100644 index 0000000..0a4ee95 --- /dev/null +++ b/dongne-account-api/src/main/resources/application-local.yml @@ -0,0 +1,5 @@ +spring: + datasource: + url: jdbc:mysql://localhost:3306/dongne?autoreconnect=true&characterEncoding=utf8&serverTimezone=Asia/Seoul + username: root + password: beaniejoy # TODO 추후 보안에 대해 생각해보기 diff --git a/dongne-account-api/src/main/resources/application.yml b/dongne-account-api/src/main/resources/application.yml new file mode 100644 index 0000000..91aa6e4 --- /dev/null +++ b/dongne-account-api/src/main/resources/application.yml @@ -0,0 +1,27 @@ +spring: + profiles: + active: local + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + jpa: + hibernate: + ddl-auto: none # use [service-api] flyway migration + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5InnoDBDialect + format_sql: true + show-sql: false + open-in-view: + flyway: + enabled: false + devtools: + livereload: + enabled: false # no use devtools' LiveReload Server + +server: + port: 9090 + +logging: + level: + org.hibernate.SQL: debug # logger 통해 로깅 + # org.hibernate.type: trace \ No newline at end of file diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt b/dongne-account-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplicationTests.kt similarity index 77% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt rename to dongne-account-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplicationTests.kt index bdfac3c..d80294f 100644 --- a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/DongneCafeServiceApiApplicationTests.kt +++ b/dongne-account-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneAccountApiApplicationTests.kt @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test import org.springframework.boot.test.context.SpringBootTest @SpringBootTest -internal class DongneCafeServiceApiApplicationTests { +internal class DongneAccountApiApplicationTests { @Test fun contextLoads() { diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/common/BaseTimeEntity.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/Cafe.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeImage.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeMenu.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/MenuOption.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/OptionDetail.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuBulkDeleteRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuRegisterRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeMenuUpdateRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeRegisterRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/CafeUpdateRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionRegisterRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/request/MenuOptionUpdateRequest.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeDetailedInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeImageInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuDetailedInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeMenuInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/CafeSearchInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/MenuOptionInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/model/response/OptionDetailInfo.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeMenuRepository.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepository.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/MenuOptionRepository.kt diff --git a/dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt similarity index 100% rename from dongne-common/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt rename to dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/OptionDetailRepository.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt similarity index 67% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt index b4f74ba..19d2072 100644 --- a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt +++ b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplication.kt @@ -4,8 +4,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication -class DongneCafeServiceApiApplication +class DongneServiceApiApplication fun main(args: Array) { - runApplication(*args) + runApplication(*args) } \ No newline at end of file diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExceptionHandler.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeExistedException.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeMenuNotFoundException.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/CafeNotFoundException.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/MenuOptionNotFoundException.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/error/OptionDetailNotFoundException.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuService.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeService.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/MenuOptionService.kt diff --git a/dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt similarity index 100% rename from dongne-service-api/src/main/java/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt rename to dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/OptionDetailService.kt diff --git a/dongne-service-api/src/main/resources/application.yml b/dongne-service-api/src/main/resources/application.yml index 436480a..4c4880c 100644 --- a/dongne-service-api/src/main/resources/application.yml +++ b/dongne-service-api/src/main/resources/application.yml @@ -15,6 +15,9 @@ spring: baseline-on-migrate: true baseline-version: 0 locations: classpath:db/migration,classpath:db/seed + devtools: + livereload: + enabled: false # no use devtools' LiveReload Server logging: level: diff --git a/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplicationTests.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplicationTests.kt new file mode 100644 index 0000000..1a4ce70 --- /dev/null +++ b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/DongneServiceApiApplicationTests.kt @@ -0,0 +1,12 @@ +package io.beaniejoy.dongnecafe + +import org.junit.jupiter.api.Test +import org.springframework.boot.test.context.SpringBootTest + +@SpringBootTest +internal class DongneServiceApiApplicationTests { + + @Test + fun contextLoads() { + } +} \ No newline at end of file diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt similarity index 100% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/entity/CafeTest.kt diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt similarity index 100% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/repository/CafeRepositoryTest.kt diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt similarity index 100% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceIntegratedTest.kt diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt similarity index 100% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeMenuServiceTest.kt diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt similarity index 97% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt index 6855a8c..5e5247d 100644 --- a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt +++ b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/service/CafeServiceTest.kt @@ -98,7 +98,7 @@ internal class CafeServiceTest { // TODO 'findByIdOrNull'은 kotlin test 라이브러리 필요한 듯 val mockCafe = mock(Cafe::class.java) - doReturn(Optional.of(cafe)).`when`(mockCafeRepository.findById(eq(cafeId))) + `when`(mockCafeRepository.findById(cafeId)).thenReturn(Optional.of(mockCafe)) doNothing().`when`(mockCafe).updateInfo( name = anyString(), @@ -109,7 +109,7 @@ internal class CafeServiceTest { // when mockCafeService.updateInfo( - id = eq(cafeId), + id = cafeId, name = "updated_name", address = "updated_address", phoneNumber = "updated_phoneNumber", diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt similarity index 100% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeMenuTestUtils.kt diff --git a/dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt b/dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt similarity index 100% rename from dongne-service-api/src/test/java/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt rename to dongne-service-api/src/test/kotlin/io/beaniejoy/dongnecafe/domain/cafe/utils/CafeTestUtils.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index 741ff6f..a1387d1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,4 @@ rootProject.name = "dongne-cafe-api" include("dongne-common") include("dongne-service-api") +include("dongne-account-api") From 4fb2032e687f35210b6f12ee5023e9d35d0d75e2 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Wed, 5 Oct 2022 00:01:27 +0900 Subject: [PATCH 3/8] =?UTF-8?q?[#17]=20feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EA=B8=B0=EB=B3=B8=20=EA=B8=B0=EB=8A=A5=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 회원가입 프로세스 가장 기본적인 기능 적용 - 회원 이메일 기준 중복 체크 및 단순 저장(pw 암호화 과정도 X) - Memeber 도메인 관련 JPA 내용 common에 적용 --- .../common/config/AuditingConfig.kt | 8 +++ .../common/entity/BaseEntityAuditorAware.kt | 12 ++++ .../dongnecafe/controller/MemberController.kt | 19 +++++++ .../error/MemberExistedException.kt | 3 + .../dongnecafe/service/MemberService.kt | 31 ++++++++++ .../domain/member/constant/RoleType.kt | 8 +++ .../dongnecafe/domain/member/entity/Member.kt | 56 +++++++++++++++++++ .../model/request/MemberRegisterRequest.kt | 8 +++ .../member/repository/MemberRepository.kt | 8 +++ .../domain/cafe/controller/CafeController.kt | 2 +- .../cafe/controller/CafeMenuController.kt | 2 +- ... => V001__Delete_all_tables_if_exists.sql} | 0 ..._Create_cafe.sql => V002__Create_cafe.sql} | 0 ...fe_menu.sql => V003__Create_cafe_menu.sql} | 0 ..._image.sql => V004__Create_cafe_image.sql} | 0 ...ption.sql => V005__Create_menu_option.sql} | 0 ...ail.sql => V006__Create_option_detail.sql} | 0 ...k.sql => V007__Alter_all_tables_pk_fk.sql} | 0 .../db/migration/V008__Create_member.sql | 13 +++++ 19 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberExistedException.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt create mode 100644 dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/constant/RoleType.kt create mode 100644 dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt create mode 100644 dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/MemberRegisterRequest.kt create mode 100644 dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/repository/MemberRepository.kt rename dongne-service-api/src/main/resources/db/migration/{V1__Delete_all_tables_if_exists.sql => V001__Delete_all_tables_if_exists.sql} (100%) rename dongne-service-api/src/main/resources/db/migration/{V2__Create_cafe.sql => V002__Create_cafe.sql} (100%) rename dongne-service-api/src/main/resources/db/migration/{V3__Create_cafe_menu.sql => V003__Create_cafe_menu.sql} (100%) rename dongne-service-api/src/main/resources/db/migration/{V4__Create_cafe_image.sql => V004__Create_cafe_image.sql} (100%) rename dongne-service-api/src/main/resources/db/migration/{V5__Create_menu_option.sql => V005__Create_menu_option.sql} (100%) rename dongne-service-api/src/main/resources/db/migration/{V6__Create_option_detail.sql => V006__Create_option_detail.sql} (100%) rename dongne-service-api/src/main/resources/db/migration/{V7__Alter_all_tables_pk_fk.sql => V007__Alter_all_tables_pk_fk.sql} (100%) create mode 100644 dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt new file mode 100644 index 0000000..9adc473 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/AuditingConfig.kt @@ -0,0 +1,8 @@ +package io.beaniejoy.dongnecafe.common.config + +import org.springframework.context.annotation.Configuration +import org.springframework.data.jpa.repository.config.EnableJpaAuditing + +@Configuration +@EnableJpaAuditing +class AuditingConfig \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt new file mode 100644 index 0000000..4d14bb9 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/BaseEntityAuditorAware.kt @@ -0,0 +1,12 @@ +package io.beaniejoy.dongnecafe.common.entity + +import org.springframework.data.domain.AuditorAware +import org.springframework.stereotype.Component +import java.util.* + +@Component +class BaseEntityAuditorAware: AuditorAware { + override fun getCurrentAuditor(): Optional { + return Optional.of("system") + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt new file mode 100644 index 0000000..c677ed1 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt @@ -0,0 +1,19 @@ +package io.beaniejoy.dongnecafe.controller + +import io.beaniejoy.dongnecafe.domain.member.model.request.MemberRegisterRequest +import io.beaniejoy.dongnecafe.service.MemberService +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +@RequestMapping("/api/members") +class MemberController( + private val memberService: MemberService +) { + @PostMapping("/signup") + fun signUp(@RequestBody resource: MemberRegisterRequest): Long { + return memberService.registerMember(resource) + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberExistedException.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberExistedException.kt new file mode 100644 index 0000000..31d58e1 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberExistedException.kt @@ -0,0 +1,3 @@ +package io.beaniejoy.dongnecafe.error + +class MemberExistedException(email: String): RuntimeException("Member[$email] is already existed") \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt new file mode 100644 index 0000000..1a98d60 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt @@ -0,0 +1,31 @@ +package io.beaniejoy.dongnecafe.service + +import io.beaniejoy.dongnecafe.domain.member.entity.Member +import io.beaniejoy.dongnecafe.domain.member.model.request.MemberRegisterRequest +import io.beaniejoy.dongnecafe.domain.member.repository.MemberRepository +import io.beaniejoy.dongnecafe.error.MemberExistedException +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional + +@Service +@Transactional +class MemberService( + private val memberRepository: MemberRepository +) { + fun registerMember(resource: MemberRegisterRequest): Long { + memberRepository.findByEmail(resource.email!!)?.also { + throw MemberExistedException(resource.email!!) + } + + val registeredMember = memberRepository.save( + Member.createMember( + email = resource.email!!, + password = resource.password!!, + address = resource.address!!, + phoneNumber = resource.phoneNumber!! + ) + ) + + return registeredMember.id + } +} \ No newline at end of file diff --git a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/constant/RoleType.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/constant/RoleType.kt new file mode 100644 index 0000000..4130db2 --- /dev/null +++ b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/constant/RoleType.kt @@ -0,0 +1,8 @@ +package io.beaniejoy.dongnecafe.domain.member.constant + +enum class RoleType(val value: String) { + ROLE_ADMIN("어드민 관리자"), + ROLE_USER("일반 사용자"), + ROLE_OWNER("카페 관리자"); + ; +} \ No newline at end of file diff --git a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt new file mode 100644 index 0000000..4c5c25d --- /dev/null +++ b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt @@ -0,0 +1,56 @@ +package io.beaniejoy.dongnecafe.domain.member.entity + +import io.beaniejoy.dongnecafe.common.BaseTimeEntity +import io.beaniejoy.dongnecafe.domain.member.constant.RoleType +import javax.persistence.* + +@Entity +@Table(name = "member") +class Member( + email: String, + password: String, + address: String, + phoneNumber: String +): BaseTimeEntity() { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "member_id", nullable = false) + val id: Long = 0L + + @Column(name = "email", nullable = false) + var email: String = email + protected set + + @Column(name = "password", nullable = false) + var password: String = password + protected set + + @Column(name = "address", nullable = false) + var address: String = address + protected set + + @Column(name = "phone_number", nullable = false) + var phoneNumber: String = phoneNumber + protected set + + @Enumerated(EnumType.STRING) + @Column(name = "role_type", nullable = false) + var roleType: RoleType = RoleType.ROLE_USER + protected set + + companion object { + fun createMember( + email: String, + password: String, + address: String, + phoneNumber: String + ): Member { + return Member( + email = email, + password = password, + address = address, + phoneNumber = phoneNumber + ) + } + } +} \ No newline at end of file diff --git a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/MemberRegisterRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/MemberRegisterRequest.kt new file mode 100644 index 0000000..4563621 --- /dev/null +++ b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/MemberRegisterRequest.kt @@ -0,0 +1,8 @@ +package io.beaniejoy.dongnecafe.domain.member.model.request + +class MemberRegisterRequest( + val email: String? = null, + val password: String? = null, + val address: String? = null, + val phoneNumber: String? = null +) \ No newline at end of file diff --git a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/repository/MemberRepository.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/repository/MemberRepository.kt new file mode 100644 index 0000000..911dcb3 --- /dev/null +++ b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/repository/MemberRepository.kt @@ -0,0 +1,8 @@ +package io.beaniejoy.dongnecafe.domain.member.repository + +import io.beaniejoy.dongnecafe.domain.member.entity.Member +import org.springframework.data.jpa.repository.JpaRepository + +interface MemberRepository : JpaRepository { + fun findByEmail(email: String): Member? +} \ No newline at end of file diff --git a/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt index 8f12999..f9b9bc1 100644 --- a/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt +++ b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeController.kt @@ -12,7 +12,7 @@ import org.springframework.data.web.PageableDefault import org.springframework.web.bind.annotation.* @RestController -@RequestMapping("/cafes") +@RequestMapping("/api/cafes") class CafeController( private val cafeService: CafeService ) { diff --git a/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt index 7603af0..4e41697 100644 --- a/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt +++ b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/domain/cafe/controller/CafeMenuController.kt @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController -@RequestMapping("/cafes/{cafeId}/menus") +@RequestMapping("/api/cafes/{cafeId}/menus") class CafeMenuController( private val cafeMenuService: CafeMenuService ) { diff --git a/dongne-service-api/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql b/dongne-service-api/src/main/resources/db/migration/V001__Delete_all_tables_if_exists.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V1__Delete_all_tables_if_exists.sql rename to dongne-service-api/src/main/resources/db/migration/V001__Delete_all_tables_if_exists.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V2__Create_cafe.sql b/dongne-service-api/src/main/resources/db/migration/V002__Create_cafe.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V2__Create_cafe.sql rename to dongne-service-api/src/main/resources/db/migration/V002__Create_cafe.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V3__Create_cafe_menu.sql b/dongne-service-api/src/main/resources/db/migration/V003__Create_cafe_menu.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V3__Create_cafe_menu.sql rename to dongne-service-api/src/main/resources/db/migration/V003__Create_cafe_menu.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V4__Create_cafe_image.sql b/dongne-service-api/src/main/resources/db/migration/V004__Create_cafe_image.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V4__Create_cafe_image.sql rename to dongne-service-api/src/main/resources/db/migration/V004__Create_cafe_image.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V5__Create_menu_option.sql b/dongne-service-api/src/main/resources/db/migration/V005__Create_menu_option.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V5__Create_menu_option.sql rename to dongne-service-api/src/main/resources/db/migration/V005__Create_menu_option.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V6__Create_option_detail.sql b/dongne-service-api/src/main/resources/db/migration/V006__Create_option_detail.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V6__Create_option_detail.sql rename to dongne-service-api/src/main/resources/db/migration/V006__Create_option_detail.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql b/dongne-service-api/src/main/resources/db/migration/V007__Alter_all_tables_pk_fk.sql similarity index 100% rename from dongne-service-api/src/main/resources/db/migration/V7__Alter_all_tables_pk_fk.sql rename to dongne-service-api/src/main/resources/db/migration/V007__Alter_all_tables_pk_fk.sql diff --git a/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql b/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql new file mode 100644 index 0000000..78a0650 --- /dev/null +++ b/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql @@ -0,0 +1,13 @@ +CREATE TABLE `member` ( + `member_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '회원 ID', + `email` varchar(20) NOT NULL COMMENT '계정 이메일', + `password` varchar(255) NOT NULL COMMENT '비밀번호', + `address` varchar(100) NOT NULL COMMENT '회원 주소', + `phone_number` varchar(11) NOT NULL COMMENT '회원 전화번호', + `role_type` varchar(20) COMMENT '회원 권한', + `created_at` datetime NOT NULL COMMENT '회원 등록날짜', + `created_by` varchar(20) NOT NULL COMMENT '회원 등록자', + `updated_at` datetime NULL COMMENT '회원 변경날짜', + `updated_by` varchar(20) NULL COMMENT '회원 변경자', + PRIMARY KEY (`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; \ No newline at end of file From 30b50c025451372e687739eea488c47301f482e4 Mon Sep 17 00:00:00 2001 From: Hanbin Lee Date: Sun, 16 Oct 2022 10:17:21 +0900 Subject: [PATCH 4/8] =?UTF-8?q?[#17]=20feat:=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=20=EA=B0=9C=EB=B0=9C=20?= =?UTF-8?q?=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 인증(로그인) 프로세스 진행중 --- build.gradle.kts | 7 ++--- .../common/config/SecurityConfig.kt | 27 +++++++++++++++++++ .../dongnecafe/controller/AuthController.kt | 24 +++++++++++++++++ .../dongnecafe/controller/MemberController.kt | 4 +-- .../dongnecafe/service/MemberService.kt | 6 +++-- .../member/model/request/SignInRequest.kt | 6 +++++ 6 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt create mode 100644 dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/SignInRequest.kt diff --git a/build.gradle.kts b/build.gradle.kts index d7e81a5..2bb7774 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,7 +10,7 @@ plugins { id("org.springframework.boot") version "2.7.0" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("jvm") version "1.6.21" - kotlin("plugin.spring") version "1.6.21" apply false + kotlin("plugin.spring") version "1.6.21" apply false // TODO: apply false what? kotlin("plugin.jpa") version "1.6.21" apply false } @@ -52,6 +52,7 @@ subprojects { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-validation") + implementation("org.springframework.boot:spring-boot-starter-security") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") developmentOnly("org.springframework.boot:spring-boot-devtools") @@ -62,6 +63,7 @@ subprojects { // DB runtimeOnly("mysql:mysql-connector-java") // MySQL runtimeOnly("com.h2database:h2") // H2 + implementation("org.flywaydb:flyway-core:7.15.0") // flyway // Logging // log4j2 @@ -69,10 +71,9 @@ subprojects { // testImplementation("org.springframework.boot:spring-boot-starter-log4j2") implementation("io.github.microutils:kotlin-logging:2.1.21") - implementation("org.flywaydb:flyway-core:7.15.0") // flyway - // Test testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("org.springframework.security:spring-security-test") } tasks.withType { diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt new file mode 100644 index 0000000..eaed309 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt @@ -0,0 +1,27 @@ +package io.beaniejoy.dongnecafe.common.config + +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.config.annotation.web.builders.HttpSecurity +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity +import org.springframework.security.crypto.factory.PasswordEncoderFactories +import org.springframework.security.crypto.password.PasswordEncoder +import org.springframework.security.web.SecurityFilterChain + +@Configuration +@EnableWebSecurity +class SecurityConfig { + @Bean + fun passwordEncoder(): PasswordEncoder { + return PasswordEncoderFactories.createDelegatingPasswordEncoder() + } + + @Bean + fun filterChain(http: HttpSecurity): SecurityFilterChain { + return http + .cors().disable() + .csrf().disable() + .formLogin().disable() + .build() + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt new file mode 100644 index 0000000..009c484 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt @@ -0,0 +1,24 @@ +package io.beaniejoy.dongnecafe.controller + +import io.beaniejoy.dongnecafe.domain.member.model.request.SignInRequest +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +@RequestMapping("/auth") +class AuthController( + private val authenticationManagerBuilder: AuthenticationManagerBuilder +) { + + @PostMapping("/authenticate") + fun signIn(@RequestBody signInRequest: SignInRequest) { + val authenticationToken = + UsernamePasswordAuthenticationToken(signInRequest.email, signInRequest.password) + + val authenticate = authenticationManagerBuilder.`object`.authenticate(authenticationToken) + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt index c677ed1..c367131 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/MemberController.kt @@ -8,11 +8,11 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController -@RequestMapping("/api/members") +@RequestMapping("/auth/members") class MemberController( private val memberService: MemberService ) { - @PostMapping("/signup") + @PostMapping("/sign-up") fun signUp(@RequestBody resource: MemberRegisterRequest): Long { return memberService.registerMember(resource) } diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt index 1a98d60..f4e11d7 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/MemberService.kt @@ -4,13 +4,15 @@ import io.beaniejoy.dongnecafe.domain.member.entity.Member import io.beaniejoy.dongnecafe.domain.member.model.request.MemberRegisterRequest import io.beaniejoy.dongnecafe.domain.member.repository.MemberRepository import io.beaniejoy.dongnecafe.error.MemberExistedException +import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @Service @Transactional class MemberService( - private val memberRepository: MemberRepository + private val memberRepository: MemberRepository, + private val passwordEncoder: PasswordEncoder ) { fun registerMember(resource: MemberRegisterRequest): Long { memberRepository.findByEmail(resource.email!!)?.also { @@ -20,7 +22,7 @@ class MemberService( val registeredMember = memberRepository.save( Member.createMember( email = resource.email!!, - password = resource.password!!, + password = passwordEncoder.encode(resource.password!!), address = resource.address!!, phoneNumber = resource.phoneNumber!! ) diff --git a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/SignInRequest.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/SignInRequest.kt new file mode 100644 index 0000000..c81a07e --- /dev/null +++ b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/model/request/SignInRequest.kt @@ -0,0 +1,6 @@ +package io.beaniejoy.dongnecafe.domain.member.model.request + +data class SignInRequest( + val email: String, + val password: String +) \ No newline at end of file From e6aafebb53226acccb8a50be50ef223c49183e87 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Sat, 29 Oct 2022 11:49:20 +0900 Subject: [PATCH 5/8] =?UTF-8?q?[#17]=20feat:=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EC=A0=88=EC=B0=A8=20=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Spring Security 스펙 활용한 인증 절차 개발(Custom Filter 적용중) - UserDetailsService custom 구현체 적용 - Member Entity activated(활성화 여부) 칼럼 및 필드 추가 --- .../common/config/SecurityConfig.kt | 19 ++++++- .../dongnecafe/common/entity/SecurityUser.kt | 5 ++ .../security/ApiAuthenticationFilter.kt | 53 +++++++++++++++++++ .../security/ApiAuthenticationProvider.kt | 31 +++++++++++ .../dongnecafe/controller/AuthController.kt | 15 +++--- .../error/MemberNotActivatedException.kt | 3 ++ .../service/UserDetailsServiceImpl.kt | 38 +++++++++++++ .../dongnecafe/domain/member/entity/Member.kt | 4 ++ .../db/migration/V008__Create_member.sql | 1 + 9 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberNotActivatedException.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/UserDetailsServiceImpl.kt diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt index eaed309..2d94751 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt @@ -1,12 +1,16 @@ package io.beaniejoy.dongnecafe.common.config +import io.beaniejoy.dongnecafe.common.security.ApiAuthenticationFilter import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration +import org.springframework.http.HttpMethod import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity import org.springframework.security.crypto.factory.PasswordEncoderFactories import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.security.web.SecurityFilterChain +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter +import org.springframework.security.web.util.matcher.AntPathRequestMatcher @Configuration @EnableWebSecurity @@ -19,9 +23,22 @@ class SecurityConfig { @Bean fun filterChain(http: HttpSecurity): SecurityFilterChain { return http - .cors().disable() .csrf().disable() .formLogin().disable() + + .authorizeRequests() + .antMatchers("/auth/members/sign-up").permitAll() + .anyRequest().authenticated() + .and() + .addFilterBefore(apiAuthenticationFilter(), UsernamePasswordAuthenticationFilter::class.java) + .build() } + + @Bean + fun apiAuthenticationFilter(): ApiAuthenticationFilter { + return ApiAuthenticationFilter( + AntPathRequestMatcher("/auth/authenticate", HttpMethod.POST.name) + ) + } } \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt new file mode 100644 index 0000000..459f0cd --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt @@ -0,0 +1,5 @@ +package io.beaniejoy.dongnecafe.common.entity + +class SecurityUser( + +) \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt new file mode 100644 index 0000000..24a6bca --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt @@ -0,0 +1,53 @@ +package io.beaniejoy.dongnecafe.common.security + +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import io.beaniejoy.dongnecafe.domain.member.model.request.SignInRequest +import mu.KotlinLogging +import org.springframework.http.HttpMethod +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken +import org.springframework.security.core.Authentication +import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter +import org.springframework.security.web.util.matcher.AntPathRequestMatcher +import org.springframework.util.StringUtils +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse + +class ApiAuthenticationFilter(requestMatcher: AntPathRequestMatcher) : + AbstractAuthenticationProcessingFilter(requestMatcher) { + + private val log = KotlinLogging.logger {} + + private val objectMapper = jacksonObjectMapper() + + override fun attemptAuthentication( + request: HttpServletRequest, + response: HttpServletResponse, + ): Authentication { + if (isPostMethod(request).not()) { + val errorMsg = "Authentication is not supported (only support for POST method)" + log.error { errorMsg } + throw IllegalStateException(errorMsg) + } + + val signInRequest = objectMapper.readValue(request.reader, SignInRequest::class.java) + + val token = signInRequest.let { + if (StringUtils.hasText(it.email).not() || StringUtils.hasText(it.password).not()) { + log.error { "Email(${it.email}) & Password are not empty" } + throw IllegalArgumentException("Email & Password are not empty!!") + } + + UsernamePasswordAuthenticationToken(it.email, it.password) + } + + return authenticationManager.authenticate(token) + } + + private fun isPostMethod(request: HttpServletRequest): Boolean { + if (request.method != HttpMethod.POST.name) { + return false + } + + return true + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt new file mode 100644 index 0000000..cbef10c --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt @@ -0,0 +1,31 @@ +package io.beaniejoy.dongnecafe.common.security + +import mu.KLogging +import org.springframework.security.authentication.AuthenticationProvider +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken +import org.springframework.security.core.Authentication +import org.springframework.security.core.userdetails.UserDetailsService +import org.springframework.security.crypto.password.PasswordEncoder +import org.springframework.stereotype.Component + +@Component +class ApiAuthenticationProvider( + private val userDetailsService: UserDetailsService, + private val passwordEncoder: PasswordEncoder +) : AuthenticationProvider { + companion object: KLogging() + + override fun authenticate(authentication: Authentication): Authentication { + logger.info { "start authentication" } + + val email = authentication.name + val password = authentication.credentials as String? + + val user = userDetailsService.loadUserByUsername(email) + TODO("Not yet implemented") + } + + override fun supports(authentication: Class<*>): Boolean { + return UsernamePasswordAuthenticationToken::class.java.isAssignableFrom(authentication) + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt index 009c484..29ffd60 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/AuthController.kt @@ -13,12 +13,11 @@ import org.springframework.web.bind.annotation.RestController class AuthController( private val authenticationManagerBuilder: AuthenticationManagerBuilder ) { - - @PostMapping("/authenticate") - fun signIn(@RequestBody signInRequest: SignInRequest) { - val authenticationToken = - UsernamePasswordAuthenticationToken(signInRequest.email, signInRequest.password) - - val authenticate = authenticationManagerBuilder.`object`.authenticate(authenticationToken) - } +// @PostMapping("/authenticate") +// fun signIn(@RequestBody signInRequest: SignInRequest) { +// val authenticationToken = +// UsernamePasswordAuthenticationToken(signInRequest.email, signInRequest.password) +// +// val authenticate = authenticationManagerBuilder.`object`.authenticate(authenticationToken) +// } } \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberNotActivatedException.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberNotActivatedException.kt new file mode 100644 index 0000000..97bedd5 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/error/MemberNotActivatedException.kt @@ -0,0 +1,3 @@ +package io.beaniejoy.dongnecafe.error + +class MemberDeactivatedException(email: String): RuntimeException("Member[$email] is deactivated") \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/UserDetailsServiceImpl.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/UserDetailsServiceImpl.kt new file mode 100644 index 0000000..ac293f9 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/service/UserDetailsServiceImpl.kt @@ -0,0 +1,38 @@ +package io.beaniejoy.dongnecafe.service + +import io.beaniejoy.dongnecafe.domain.member.entity.Member +import io.beaniejoy.dongnecafe.domain.member.repository.MemberRepository +import io.beaniejoy.dongnecafe.error.MemberDeactivatedException +import mu.KLogging +import org.springframework.security.core.authority.SimpleGrantedAuthority +import org.springframework.security.core.userdetails.User +import org.springframework.security.core.userdetails.UserDetails +import org.springframework.security.core.userdetails.UserDetailsService +import org.springframework.security.core.userdetails.UsernameNotFoundException +import org.springframework.stereotype.Component + +@Component("userDetailsService") +class UserDetailsServiceImpl( + private val memberRepository: MemberRepository +) : UserDetailsService { + companion object: KLogging() + + override fun loadUserByUsername(email: String): UserDetails { + return memberRepository.findByEmail(email)?.let { + logger.info { "[LOAD MEMBER] email: ${it.email}, role: ${it.roleType}, activated: ${it.activated}" } + createSecurityUser(it) + } ?: throw UsernameNotFoundException(email) + } + + private fun createSecurityUser(member: Member): User { + if (member.activated.not()) { + throw MemberDeactivatedException(member.email) + } + + return User( + /* username = */ member.email, + /* password = */ member.password, + /* authorities = */ listOf(SimpleGrantedAuthority(member.roleType.name)) + ) + } +} \ No newline at end of file diff --git a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt index 4c5c25d..4c4f235 100644 --- a/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt +++ b/dongne-common/src/main/kotlin/io/beaniejoy/dongnecafe/domain/member/entity/Member.kt @@ -38,6 +38,10 @@ class Member( var roleType: RoleType = RoleType.ROLE_USER protected set + @Column(name = "activated", nullable = false) + var activated: Boolean = true + protected set + companion object { fun createMember( email: String, diff --git a/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql b/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql index 78a0650..e3fad2f 100644 --- a/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql +++ b/dongne-service-api/src/main/resources/db/migration/V008__Create_member.sql @@ -5,6 +5,7 @@ CREATE TABLE `member` ( `address` varchar(100) NOT NULL COMMENT '회원 주소', `phone_number` varchar(11) NOT NULL COMMENT '회원 전화번호', `role_type` varchar(20) COMMENT '회원 권한', + `activated` tinyint(1) NOT NULL COMMENT '계정 활성화 여부', `created_at` datetime NOT NULL COMMENT '회원 등록날짜', `created_by` varchar(20) NOT NULL COMMENT '회원 등록자', `updated_at` datetime NULL COMMENT '회원 변경날짜', From ae0d89d8707e92ff19eda94135df144219087227 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Sat, 29 Oct 2022 11:59:25 +0900 Subject: [PATCH 6/8] =?UTF-8?q?[#17]=20feat:=20provider=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Custom AuthenticationProvider 구현체 적용(비밀번호 인증 과정) - 불필요한 클래스 제거(SecurityUser) --- .../dongnecafe/common/entity/SecurityUser.kt | 5 ----- .../common/security/ApiAuthenticationProvider.kt | 12 +++++++++++- 2 files changed, 11 insertions(+), 6 deletions(-) delete mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt deleted file mode 100644 index 459f0cd..0000000 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/entity/SecurityUser.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.beaniejoy.dongnecafe.common.entity - -class SecurityUser( - -) \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt index cbef10c..1deda11 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt @@ -2,12 +2,17 @@ package io.beaniejoy.dongnecafe.common.security import mu.KLogging import org.springframework.security.authentication.AuthenticationProvider +import org.springframework.security.authentication.BadCredentialsException import org.springframework.security.authentication.UsernamePasswordAuthenticationToken import org.springframework.security.core.Authentication import org.springframework.security.core.userdetails.UserDetailsService import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.stereotype.Component +/** + * 실제 인증 절차 수행 + * @property userDetailsService email로 계정 찾기 + */ @Component class ApiAuthenticationProvider( private val userDetailsService: UserDetailsService, @@ -22,7 +27,12 @@ class ApiAuthenticationProvider( val password = authentication.credentials as String? val user = userDetailsService.loadUserByUsername(email) - TODO("Not yet implemented") + if (!passwordEncoder.matches(password, user.password)) { + throw BadCredentialsException("Input password does not match stored password") + } + + // password null로 반환 + return UsernamePasswordAuthenticationToken(email, null, user.authorities) } override fun supports(authentication: Class<*>): Boolean { From 78648ec47dcaae19901cd2ac56c0dab7e5999fc4 Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Mon, 31 Oct 2022 01:10:35 +0900 Subject: [PATCH 7/8] =?UTF-8?q?[#17]=20feat:=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=20=EB=82=B4=20=EC=97=AC?= =?UTF-8?q?=EB=9F=AC=20=EB=B6=80=EA=B0=80=20=EB=82=B4=EC=9A=A9=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - api 전용 success/failure handler 적용 - custom filter 적용을 위한 security config 내용 추가 설정 --- .../common/config/SecurityConfig.kt | 39 ++++++++++++++--- .../security/ApiAuthenticationFilter.kt | 6 ++- .../security/ApiAuthenticationProvider.kt | 4 +- .../ApiAuthenticationFailureHandler.kt | 42 ++++++++++++++++++ .../ApiAuthenticationSuccessHandler.kt | 43 +++++++++++++++++++ .../security/model/AuthenticationResult.kt | 11 +++++ .../dongnecafe/controller/TestController.kt | 13 ++++++ .../common/config/SecurityConfig.kt | 34 +++++++++++++++ .../src/main/resources/application.yml | 2 +- 9 files changed, 186 insertions(+), 8 deletions(-) create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationFailureHandler.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationSuccessHandler.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/model/AuthenticationResult.kt create mode 100644 dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/TestController.kt create mode 100644 dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt index 2d94751..4f6b177 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt @@ -1,24 +1,35 @@ package io.beaniejoy.dongnecafe.common.config import io.beaniejoy.dongnecafe.common.security.ApiAuthenticationFilter +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.autoconfigure.security.servlet.PathRequest import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.http.HttpMethod +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer +import org.springframework.security.core.userdetails.UserDetailsService import org.springframework.security.crypto.factory.PasswordEncoderFactories import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.security.web.SecurityFilterChain +import org.springframework.security.web.authentication.AuthenticationFailureHandler +import org.springframework.security.web.authentication.AuthenticationSuccessHandler import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter import org.springframework.security.web.util.matcher.AntPathRequestMatcher @Configuration @EnableWebSecurity class SecurityConfig { - @Bean - fun passwordEncoder(): PasswordEncoder { - return PasswordEncoderFactories.createDelegatingPasswordEncoder() - } + @Autowired + lateinit var authenticationConfiguration: AuthenticationConfiguration + + @Autowired + lateinit var apiAuthenticationSuccessHandler: AuthenticationSuccessHandler + + @Autowired + lateinit var apiAuthenticationFailureHandler: AuthenticationFailureHandler @Bean fun filterChain(http: HttpSecurity): SecurityFilterChain { @@ -28,6 +39,7 @@ class SecurityConfig { .authorizeRequests() .antMatchers("/auth/members/sign-up").permitAll() + .antMatchers("/test").hasRole("USER") // 임시 인가 테스트용 .anyRequest().authenticated() .and() .addFilterBefore(apiAuthenticationFilter(), UsernamePasswordAuthenticationFilter::class.java) @@ -35,10 +47,27 @@ class SecurityConfig { .build() } + @Bean + fun webSecurityCustomizer(): WebSecurityCustomizer { + return WebSecurityCustomizer { web -> + web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations()) + web.ignoring().antMatchers("/error") + } + } + + @Bean + fun passwordEncoder(): PasswordEncoder { + return PasswordEncoderFactories.createDelegatingPasswordEncoder() + } + @Bean fun apiAuthenticationFilter(): ApiAuthenticationFilter { return ApiAuthenticationFilter( AntPathRequestMatcher("/auth/authenticate", HttpMethod.POST.name) - ) + ).apply { + this.setAuthenticationManager(authenticationConfiguration.authenticationManager) + this.setAuthenticationSuccessHandler(apiAuthenticationSuccessHandler) + this.setAuthenticationFailureHandler(apiAuthenticationFailureHandler) + } } } \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt index 24a6bca..7a52e47 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt @@ -23,6 +23,7 @@ class ApiAuthenticationFilter(requestMatcher: AntPathRequestMatcher) : request: HttpServletRequest, response: HttpServletResponse, ): Authentication { + log.info { "[API Filter] attempt to authenticate" } if (isPostMethod(request).not()) { val errorMsg = "Authentication is not supported (only support for POST method)" log.error { errorMsg } @@ -30,6 +31,7 @@ class ApiAuthenticationFilter(requestMatcher: AntPathRequestMatcher) : } val signInRequest = objectMapper.readValue(request.reader, SignInRequest::class.java) + request.setAttribute("email", signInRequest.email) val token = signInRequest.let { if (StringUtils.hasText(it.email).not() || StringUtils.hasText(it.password).not()) { @@ -40,7 +42,9 @@ class ApiAuthenticationFilter(requestMatcher: AntPathRequestMatcher) : UsernamePasswordAuthenticationToken(it.email, it.password) } - return authenticationManager.authenticate(token) + val authenticate = authenticationManager.authenticate(token) + logger.info("attempt authentication ${authenticate.principal}") + return authenticate } private fun isPostMethod(request: HttpServletRequest): Boolean { diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt index 1deda11..0a87acf 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationProvider.kt @@ -31,8 +31,10 @@ class ApiAuthenticationProvider( throw BadCredentialsException("Input password does not match stored password") } + logger.info { "User password ${user.password}" } + // password null로 반환 - return UsernamePasswordAuthenticationToken(email, null, user.authorities) + return UsernamePasswordAuthenticationToken(user, null, user.authorities) } override fun supports(authentication: Class<*>): Boolean { diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationFailureHandler.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationFailureHandler.kt new file mode 100644 index 0000000..a129ac0 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationFailureHandler.kt @@ -0,0 +1,42 @@ +package io.beaniejoy.dongnecafe.common.security.handler + +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import io.beaniejoy.dongnecafe.common.security.model.AuthenticationResult +import io.beaniejoy.dongnecafe.domain.member.model.request.SignInRequest +import mu.KLogging +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.security.core.AuthenticationException +import org.springframework.security.web.authentication.AuthenticationFailureHandler +import org.springframework.stereotype.Component +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse + +@Component +class ApiAuthenticationFailureHandler : AuthenticationFailureHandler { + private val objectMapper = jacksonObjectMapper() + + companion object : KLogging() + + override fun onAuthenticationFailure( + request: HttpServletRequest, + response: HttpServletResponse, + exception: AuthenticationException, + ) { + val email = request.getAttribute("email") as String + logger.error { "[AUTH FAILED] $email" } + + response.apply { + this.status = HttpStatus.UNAUTHORIZED.value() + this.contentType = MediaType.APPLICATION_JSON_VALUE + } + + objectMapper.writeValue( + response.writer, + AuthenticationResult( + email = email, + msg = "authentication failed" + ) + ) + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationSuccessHandler.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationSuccessHandler.kt new file mode 100644 index 0000000..b57fc47 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/handler/ApiAuthenticationSuccessHandler.kt @@ -0,0 +1,43 @@ +package io.beaniejoy.dongnecafe.common.security.handler + +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import io.beaniejoy.dongnecafe.common.security.model.AuthenticationResult +import mu.KLogging +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.security.core.Authentication +import org.springframework.security.core.userdetails.User +import org.springframework.security.web.authentication.AuthenticationSuccessHandler +import org.springframework.stereotype.Component +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse + +@Component +class ApiAuthenticationSuccessHandler :AuthenticationSuccessHandler { + private val objectMapper = jacksonObjectMapper() + + companion object: KLogging() + + override fun onAuthenticationSuccess( + request: HttpServletRequest, + response: HttpServletResponse, + authentication: Authentication, + ) { + val user = authentication.principal as User + logger.info { "[AUTH SUCCESS] email: ${user.username}, authorities: ${user.authorities}" } + + response.apply { + this.status = HttpStatus.OK.value() + this.contentType = MediaType.APPLICATION_JSON_VALUE + } + + objectMapper.writeValue( + response.writer, + AuthenticationResult( + email = user.username, + authorities = user.authorities, + msg = "authentication success" + ) + ) + } +} \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/model/AuthenticationResult.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/model/AuthenticationResult.kt new file mode 100644 index 0000000..b5498f1 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/model/AuthenticationResult.kt @@ -0,0 +1,11 @@ +package io.beaniejoy.dongnecafe.common.security.model + +import com.fasterxml.jackson.annotation.JsonInclude +import org.springframework.security.core.GrantedAuthority + +data class AuthenticationResult( + val email: String, + @JsonInclude(JsonInclude.Include.NON_EMPTY) + val authorities: Collection = listOf(), + val msg: String +) \ No newline at end of file diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/TestController.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/TestController.kt new file mode 100644 index 0000000..b171393 --- /dev/null +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/controller/TestController.kt @@ -0,0 +1,13 @@ +package io.beaniejoy.dongnecafe.controller + +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +class TestController { + + @GetMapping("/test") + fun test(): String { + return "authorize OK!" + } +} \ No newline at end of file diff --git a/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt new file mode 100644 index 0000000..9dcf6be --- /dev/null +++ b/dongne-service-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/config/SecurityConfig.kt @@ -0,0 +1,34 @@ +package io.beaniejoy.dongnecafe.common.config + +import org.springframework.boot.autoconfigure.security.servlet.PathRequest +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.security.config.annotation.web.builders.HttpSecurity +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer +import org.springframework.security.web.SecurityFilterChain + +@Configuration +@EnableWebSecurity +class SecurityConfig { + @Bean + fun filterChain(http: HttpSecurity): SecurityFilterChain { + return http + .csrf().disable() + .formLogin().disable() + + .authorizeRequests() + .anyRequest().authenticated() // 임시 허용 + + .and() + .build() + } + + @Bean + fun webSecurityCustomizer(): WebSecurityCustomizer { + return WebSecurityCustomizer { web -> + web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations()) + web.ignoring().antMatchers("/error") + } + } +} \ No newline at end of file diff --git a/dongne-service-api/src/main/resources/application.yml b/dongne-service-api/src/main/resources/application.yml index 4c4880c..eea384a 100644 --- a/dongne-service-api/src/main/resources/application.yml +++ b/dongne-service-api/src/main/resources/application.yml @@ -13,7 +13,7 @@ spring: show-sql: false flyway: baseline-on-migrate: true - baseline-version: 0 + baseline-version: "000" locations: classpath:db/migration,classpath:db/seed devtools: livereload: From 1852098bf46eed32aec6d48dca38396787d83d4b Mon Sep 17 00:00:00 2001 From: beaniejoy Date: Tue, 1 Nov 2022 03:16:03 +0900 Subject: [PATCH 8/8] =?UTF-8?q?[#17]=20modify:=20Filter=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Request Content-Type 조건 추가 - logger 내용 제거 --- .../security/ApiAuthenticationFilter.kt | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt index 7a52e47..a44a00b 100644 --- a/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt +++ b/dongne-account-api/src/main/kotlin/io/beaniejoy/dongnecafe/common/security/ApiAuthenticationFilter.kt @@ -2,8 +2,8 @@ package io.beaniejoy.dongnecafe.common.security import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import io.beaniejoy.dongnecafe.domain.member.model.request.SignInRequest -import mu.KotlinLogging import org.springframework.http.HttpMethod +import org.springframework.http.MediaType import org.springframework.security.authentication.UsernamePasswordAuthenticationToken import org.springframework.security.core.Authentication import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter @@ -15,19 +15,14 @@ import javax.servlet.http.HttpServletResponse class ApiAuthenticationFilter(requestMatcher: AntPathRequestMatcher) : AbstractAuthenticationProcessingFilter(requestMatcher) { - private val log = KotlinLogging.logger {} - private val objectMapper = jacksonObjectMapper() override fun attemptAuthentication( request: HttpServletRequest, response: HttpServletResponse, ): Authentication { - log.info { "[API Filter] attempt to authenticate" } - if (isPostMethod(request).not()) { - val errorMsg = "Authentication is not supported (only support for POST method)" - log.error { errorMsg } - throw IllegalStateException(errorMsg) + if (isValidRequest(request).not()) { + throw IllegalStateException("request is not supported. check request method and content-type") } val signInRequest = objectMapper.readValue(request.reader, SignInRequest::class.java) @@ -35,23 +30,24 @@ class ApiAuthenticationFilter(requestMatcher: AntPathRequestMatcher) : val token = signInRequest.let { if (StringUtils.hasText(it.email).not() || StringUtils.hasText(it.password).not()) { - log.error { "Email(${it.email}) & Password are not empty" } throw IllegalArgumentException("Email & Password are not empty!!") } UsernamePasswordAuthenticationToken(it.email, it.password) } - val authenticate = authenticationManager.authenticate(token) - logger.info("attempt authentication ${authenticate.principal}") - return authenticate + return authenticationManager.authenticate(token) } - private fun isPostMethod(request: HttpServletRequest): Boolean { + private fun isValidRequest(request: HttpServletRequest): Boolean { if (request.method != HttpMethod.POST.name) { return false } + if (request.contentType != MediaType.APPLICATION_JSON_VALUE) { + return false + } + return true } } \ No newline at end of file