Skip to content

Latest commit

 

History

History
268 lines (172 loc) · 6.75 KB

README.md

File metadata and controls

268 lines (172 loc) · 6.75 KB

CoinTalk 유저 서비스

java Spring Gradle Mysql EC2 GitHub GithubAction Slack

Service Architecture

image

How to Setting

mysql 설정

  1. mysql을 설치해 줍니다.
  2. 원하는 database name을 설정합니다.
  3. application.properties 에 해당 정보들을 설정합니다.

인증 메일 설정

  1. 인증 메일을 발송할 계정을 하나 생성합니다.
  2. 2단계 인증을 합니다.
  3. 앱 비밀번호를 생성해서 기록해 둡니다. [참고 도움말]
  4. application.properties의 email 항목에 입력합니다.

EC2, S3 설정

  • EC2와 S3 관련 설정을 끝내고 관련 정보를 application.properties에 입력합니다.

application.properties 설정

  1. .gitignore 에 등록되어 있기 때문에 application.properties 가 포함되지 않습니다.
  2. application.properties.sample 을 복사해서 application.proeprties 를 생성해서 사용합니다.
// application.properties

spring.r2dbc.url=r2dbc:mysql://localhost:3306/databaseName?characterEncoding=utf8
spring.r2dbc.username=mysql username
spring.r2dbc.password=mysql password
secret=jwt에 대한 secret입니다. 
accessExpire=7200000와 같은 숫자값
refreshExpire=7200000와 같은 숫자값

# email
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=
spring.mail.password=
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

# aws s3 setting
cloud.aws.s3.bucket=
cloud.aws.credentials.access-key=
cloud.aws.credentials.secret-key=
cloud.aws.region.static=
cloud.aws.region.auto=false
cloud.aws.stack.auto=false
cloud.aws.s3.bucket.url=
cloud.aws.s3.bucket.my.download.url=


# thymleaf setting
# 로컬에서 front클라를 간단하게 띄워서 사용할 경우에 추가 합니다. 아니면 없어도 됩니다.
spring.thymeleaf.cache=false
spring.thymeleaf.enabled=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

Github Action Secret 설정

  1. .github 디렉토리 안의 deploy.yml, pullrequest.yml 에 설정값들이 존재합니다.
  2. https://github.com/{your-id}/{your-repository}/settings/secrets/actions 경로에서 아래의 값들을 New repository secret 로 설정해 줘야 합니다. 해당 값들은 application.properties의 값들과 동일합니다.
  3. 2개의 yml에 보면 github action 빌드 과정에서 application.proeprties를 동적으로 생성할 때 아래의 값들이 application.properties 에서 어떤 값으로 들어가는지 확인이 가능합니다.
  4. 참고로 .github 안의 디렉토리 안의 deploy.yml, pullrequest.yml 를 삭제하면 아래의 값들은 설정할 필요가 없습니다.
// github action secret setting

MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD

TOKEN_SECRET
TOKEN_ACCESSEXPIRE
TOKEN_REFRESHEXPIRE

MAIL_USERNAME
MAIL_PASSWORD

# cloud.aws.credentials.access-key
CREDENTIALS_ACCESS_KEY
# cloud.aws.credentials.secret-key
CREDENTIALS_SECRET_KEY

AWS_ACCESS_KEY
AWS_SECRET_KEY

Husky 설정

  • commit lint를 좀더 쉽게 설정하기 위해서 husky를 사용했습니다.
  • commitlint.config.js를 통해서 설정이 가능합니다.
# node.js와 yarn 이미 설치된 상황에서 진행합니다. 
$ git clone https://github.com/dduckddack-coinTalk/app-user.git
$ cd app-user
$ yarn

개발환경 설정

  1. 저장소를 클론해서 받습니다.
$ git clone https://github.com/dduckddack-coinTalk/app-user.git
  1. intellij로 해당 프로젝트를 실행합니다.
  2. 우측 Gradle탭을 열어서 Reload All Gradle Projects를 한다음 그 위의 있는 ▶︎ 버튼을 클릭합니다.

image

REST API

URI : POST /user/account

유저를 생성하는 API

Parameters

name type Description Default
email String 유저 이메일
password String 패스워드
nickName String 유저 닉네임

Responses

{
    "status": "ok",
    "message": "유저 생성 성공"
}

URI : POST /user/login

유저 로그인 하는 API

Parameters

name type Description Default
email String 유저 이메일
password String 패스워드

Responses

{
    "status": "ok",
    "message": "유저 로그인 성공",
    "accessToken": "",
    "refreshToken": "",
    "userInfo": {
        "id": 1,
        "email": "[email protected]",
        "nickName": "test1",
        "imagePath": "https://..."
    }
}

URI : PUT /user/account

유저 정보를 수정하는 API

Parameters

name type Description Default
email String 유저 이메일
password String 패스워드
nickName String 유저 닉네임
file File 유저 프로필 이미지

Responses

{
    "status": "ok",
    "message": "유저 변경 성공"
}

URI : POST /user/email/{email}/authentication

가입하려는 유저의 이메일에 대한 인증 요청하는 API

Responses

{
    "status": "ok",
    "message": "유저 인증 메일 발송 성공"
}

URI : GET /user/email/{email}/authentication

가입하려는 유저의 이메일에 대한 인증 결과를 확인하는 API

Responses

{
    "status": "ok",
    "message": "유저 생성 성공"
}