Skip to content

Commit

Permalink
release : 유저 서비스 내 이메일 중복 검증, 임시 회원가입, 회원가입 기능 추가 (#87)
Browse files Browse the repository at this point in the history
* feat: init project

* fix: add multi platform (#39)

* feat : 회원가입 API를 추가합니다. (회원가입에 요구되는 서브 태스크인 이메일 중복확인 API도 함께 추가) (#60)

* feat : 유저 도메인 정의

* feat : 유저 서비스 내 글로벌 예외처리 추가

* refactor : 이메일 중복 DTO 수정

* feat : 인수/통합 테스트 템플릿 추가

* refactor : NoArgsConstructor 접근 제어자 변경

* refactor : 회원가입 쓰기 작업 시 Transactional 옵션 변경

* test : 회원가입 성공 인수 테스트 작성

* feat: set gradle project

* feat: create createUser interface

* feat: add generated ignore

* feat: set gRPC settings

* feat: add ports setting

* feat: create gRPC client method

* refactor : VO를 class에서 record로 변경

* refactor : create_social_user.proto 필드 네이밍 수정

* refactor : send_email_auth.proto 생성

* refactor : UserApi 엔드포인트 및 네이밍 변경

* refactor : 불필요한 파일 제거

* feat : 공통 환경 설정 및 패스워드 인코더 추가

* refactor : dto 패키지 변경

* feat : PasswordEncoder 인터페이스 추가

* feat : gRPC Client, Eureka 연동

* feat : 유저 임시 가입 유스케이스, 비즈니스 로직 추가

* refactor : 정적 컨텐츠 VO 래핑 추가

* refactor : 불필요한 테스트 제거

* fix : grpc import syntax in build.gradle

* refactor : 주석 제거

* refactor : GRPC -> Grpc 네이밍 변경

* refactor : application.yml 환경변수화

* refactor : User DDL 수정

* refactor : JoinRequest내 불필요한 필드 제거

* refactor : EurekaServiceName Enum 필드 Getter 추가

* refactor : User Entity Role 기본 값 추가

* refactor : Eureka Client defaultZone 수정

* refactor : Clean Broken Code

* fix: add builder (#86)

* feat: add envs (#91)

* fix : build.gradle (#92)

* refactor : build script (#94)
  • Loading branch information
K-Diger authored Jan 22, 2024
1 parent 02aed1b commit 812250e
Show file tree
Hide file tree
Showing 50 changed files with 1,719 additions and 1 deletion.
10 changes: 9 additions & 1 deletion .github/workflows/dockerhub-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ jobs:

- name: Build with Gradle
env:
USER_DB_URI: ${{ secrets.USER_DB_URI }}
USER_DB_USERNAME: ${{ secrets.USER_DB_USERNAME }}
USER_DB_PASSWORD: ${{ secrets.USER_DB_PASSWORD }}

SOCIAL_DB_USERNAME: ${{ secrets.SOCIAL_DB_USERNAME }}
SOCIAL_DB_PASSWORD: ${{ secrets.SOCIAL_DB_PASSWORD }}
SOCIAL_DB_URI: ${{ secrets.SOCIAL_DB_URI }}
Expand All @@ -55,6 +59,10 @@ jobs:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
BRANCH_NAME: ${{ env.BRANCH_NAME }}

USER_DB_URI: ${{ secrets.USER_DB_URI }}
USER_DB_USERNAME: ${{ secrets.USER_DB_USERNAME }}
USER_DB_PASSWORD: ${{ secrets.USER_DB_PASSWORD }}

SOCIAL_DB_USERNAME: ${{ secrets.SOCIAL_DB_USERNAME }}
SOCIAL_DB_PASSWORD: ${{ secrets.SOCIAL_DB_PASSWORD }}
SOCIAL_DB_URI: ${{ secrets.SOCIAL_DB_URI }}
Expand All @@ -72,4 +80,4 @@ jobs:
docker buildx create --use
docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
docker buildx build --platform=linux/amd64,linux/arm64 -t $DOCKER_USERNAME/$BRANCH_NAME-service:latest . --push
docker push $DOCKER_USERNAME/$BRANCH_NAME-service:latest
18 changes: 18 additions & 0 deletions src/common-module/src/main/proto/send_email_auth.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
syntax = "proto3";

option java_multiple_files = true;
option java_package = "org.palette.grpc";

service GAuthService {
rpc sendEmailAuth (GSendEmailAuthRequest) returns (GSendEmailAuthResponse) {}
}

message GSendEmailAuthRequest {
int64 id = 1;
string email = 2;
string nickname = 3;
}

message GSendEmailAuthResponse {
bool message = 1;
}
69 changes: 69 additions & 0 deletions src/user-service/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
*.class
*.log
*.ctxt
.mtj.tmp/
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
replay_pid*
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
.idea/**/aws.xml
.idea/**/contentModel.xml
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
.idea/**/gradle.xml
.idea/**/libraries
cmake-build-*/
.idea/**/mongoSettings.xml
*.iws
out/
.idea_modules/
atlassian-ide-plugin.xml
.idea/replstate.xml
.idea/sonarlint/
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
.idea/httpRequests
.idea/caches/build_file_checksums.ser
.gradle
**/build/
!src/**/build/
gradle-app.setting
!gradle-wrapper.jar
!gradle-wrapper.properties
.gradletasknamecache
.project
.classpath
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
7 changes: 7 additions & 0 deletions src/user-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM openjdk:17-oracle
ENV USER_DB_URI=${USER_DB_URI}
ENV USER_DB_USERNAME=${USER_DB_USERNAME}
ENV USER_DB_PASSWORD=${USER_DB_PASSWORD}
ARG JAR_FILE=build/libs/easel-user-service-0.0.1-SNAPSHOT.jar
ADD ${JAR_FILE} easel-user-service.jar
ENTRYPOINT ["java", "-jar", "/easel-user-service.jar"]
32 changes: 32 additions & 0 deletions src/user-service/HELP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Read Me First
The following was discovered as part of building this project:

* The original package name 'org.palette.easel-user-service' is invalid and this project uses 'org.palette.easeluserservice' instead.

# Getting Started

### Reference Documentation
For further reference, please consider the following sections:

* [Official Gradle documentation](https://docs.gradle.org)
* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.2.1/gradle-plugin/reference/html/)
* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.2.1/gradle-plugin/reference/html/#build-image)
* [Spring Web](https://docs.spring.io/spring-boot/docs/3.2.1/reference/htmlsingle/index.html#web)
* [Eureka Discovery Client](https://docs.spring.io/spring-cloud-netflix/docs/current/reference/html/#service-discovery-eureka-clients)
* [Spring Data JPA](https://docs.spring.io/spring-boot/docs/3.2.1/reference/htmlsingle/index.html#data.sql.jpa-and-spring-data)

### Guides
The following guides illustrate how to use some features concretely:

* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/)
* [Accessing data with MySQL](https://spring.io/guides/gs/accessing-data-mysql/)
* [Service Registration and Discovery with Eureka and Spring Cloud](https://spring.io/guides/gs/service-registration-and-discovery/)
* [Accessing Data with JPA](https://spring.io/guides/gs/accessing-data-jpa/)

### Additional Links
These additional references should also help you:

* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle)

56 changes: 56 additions & 0 deletions src/user-service/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
plugins {
java
id("org.springframework.boot") version "3.2.1"
id("io.spring.dependency-management") version "1.1.4"
}

group = "org.palette"
version = "0.0.1-SNAPSHOT"

java {
sourceCompatibility = JavaVersion.VERSION_17
}

configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
}

repositories {
mavenCentral()
}

extra["springCloudVersion"] = "2023.0.0"

dependencies {
implementation ("net.devh:grpc-spring-boot-starter:2.15.0.RELEASE")
implementation(project(":common-module"))

implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")

implementation("io.hypersistence:hypersistence-utils-hibernate-60:3.7.0")
implementation("com.vladmihalcea:hibernate-types-52:2.10.4")
implementation("io.hypersistence:hypersistence-utils-hibernate-5:3.1.1")

implementation("com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations")

runtimeOnly("com.mysql:mysql-connector-j")
implementation("org.springframework.boot:spring-boot-starter-validation")

compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}

dependencyManagement {
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("springCloudVersion")}")
}
}

tasks.withType<Test> {
useJUnitPlatform()
}
Binary file not shown.
7 changes: 7 additions & 0 deletions src/user-service/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit 812250e

Please sign in to comment.