Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
2248999
Merge pull request #6 from gaaji/GM-22
kgh2120 Jan 11, 2023
cd7bf58
Merge pull request #7 from gaaji/GM-23
kgh2120 Jan 11, 2023
326efed
Merge pull request #8 from gaaji/GM-9
kgh2120 Jan 11, 2023
034c7ca
Merge pull request #9 from gaaji/GM-10
kgh2120 Jan 11, 2023
1c6501c
Merge pull request #10 from gaaji/GM-24
kgh2120 Jan 11, 2023
0a40b4b
Merge pull request #11 from gaaji/GM-60
kgh2120 Jan 13, 2023
4d375a0
GM-58 네이버 로그인 오류 수정
kgh2120 Jan 13, 2023
b0807ec
Merge pull request #12 from gaaji/GM-58
kgh2120 Jan 13, 2023
076b6d0
GM-63 유레카 클라이언트 설정
kgh2120 Jan 13, 2023
0aa22b6
Merge pull request #13 from gaaji/GM-63
kgh2120 Jan 13, 2023
8d899f7
GM-122 회원 정보 조회 기능 추가
kgh2120 Jan 20, 2023
aeb65e5
Merge pull request #14 from gaaji/GM-122
kgh2120 Jan 20, 2023
82bc360
GM-78 프로필 사진 업로드 기능 추가
kgh2120 Jan 31, 2023
2bb238f
GM-78 회원 정보 조회 시 프로필 사진 URL도 추가로 반환
kgh2120 Jan 31, 2023
fedda1b
Merge pull request #15 from gaaji/GM-78
kgh2120 Jan 31, 2023
07af7f9
GM-176 GithubAction CI 설정파일, Dockerfile 생성
kgh2120 Feb 1, 2023
6f9ac12
GM-176 GithubAction CI 설정파일 환경변수 추가
kgh2120 Feb 1, 2023
efc6b20
Merge pull request #16 from gaaji/GM-176
kgh2120 Feb 1, 2023
da0a4d8
GM-184 도커파일 수정 및 도커환경에서 설정파일 추가
kgh2120 Feb 1, 2023
12b4d07
Merge pull request #17 from gaaji/GM-184
kgh2120 Feb 1, 2023
0786e95
GM-185 회원 서비스 설정 파일 수정 및 CI 파일 수정
kgh2120 Feb 1, 2023
3b9b6dc
GM-186 레디스 빈 설정 변경
kgh2120 Feb 1, 2023
eeb0214
Merge pull request #18 from gaaji/GM-185
kgh2120 Feb 1, 2023
9382107
Merge pull request #19 from gaaji/GM-186
kgh2120 Feb 1, 2023
7c4f2d0
GM-190 CI 파일 수정
kgh2120 Feb 2, 2023
94f8299
Merge pull request #21 from gaaji/GM-190
kgh2120 Feb 2, 2023
0855884
GM-192 회원 서비스 예외처리
kgh2120 Feb 3, 2023
e531c53
Merge pull request #22 from gaaji/GM-192
kgh2120 Feb 3, 2023
bd22b44
GM-244 닉네임 변경 이벤트 발행
kgh2120 Feb 14, 2023
a0704cf
GM-244 테스트 오류 수정
kgh2120 Feb 14, 2023
316de5a
Merge pull request #24 from gaaji/GM-244
kgh2120 Feb 14, 2023
87c8e54
GM-259 로그인 성공 후 리다이렉트
kgh2120 Feb 15, 2023
6d09be8
Merge pull request #25 from gaaji/GM-259
kgh2120 Feb 15, 2023
2b57a7e
리뷰 관련 도메인 추가
Feb 15, 2023
c04fe20
후기 추가 서비스
Feb 16, 2023
c8cec61
예외처리 추가
Feb 17, 2023
593383d
오류 수정 및 후기 테스트 완료
Feb 17, 2023
dd66565
Merge pull request #26 from gaaji/GM-250
ansm6358 Feb 20, 2023
71711e4
리뷰(후기) 수정 서비스
Feb 20, 2023
736f1e7
예외 사항 추가
Feb 20, 2023
e16168b
후기 수정 테스트
Feb 20, 2023
a53c743
Merge pull request #27 from gaaji/GM-252
ansm6358 Feb 21, 2023
8fd031f
내가 쓴 리뷰 조회
Feb 21, 2023
4066be2
내 글 조회 서비스 테스트 완료
Feb 21, 2023
ffbe132
ignore 수정
Feb 21, 2023
d5c2db3
upload
Feb 21, 2023
b7df206
Create pull_request_template.md
ansm6358 Feb 21, 2023
c7705cd
Merge branch 'GM-254' into GM-251
Feb 21, 2023
a27b3db
Merge pull request #28 from gaaji/GM-254
ansm6358 Feb 21, 2023
298665f
Merge branch 'GM-251' of https://github.com/gaaji/auth.git into GM-251
Feb 21, 2023
88a92e7
도메인에 town도 같이 저장 하게 수정
Feb 21, 2023
12fff18
후기 조회
Feb 22, 2023
6e9747d
후기 조회 테스트 완료
Feb 22, 2023
3125640
Merge pull request #29 from gaaji/GM-257
ansm6358 Feb 22, 2023
1f6f6f1
메너 평가 리스트 조회
Feb 22, 2023
84023b0
오타 수정
Feb 22, 2023
fdbe5bc
매너 리스트 조회 테스트 완료
Feb 22, 2023
d2c2cee
수정
Feb 22, 2023
3303145
Merge pull request #30 from gaaji/GM-309
ansm6358 Feb 22, 2023
3bc465b
매너 조회 서비스
Feb 27, 2023
8bf0a1c
매너 조회 테스트
Feb 27, 2023
eebafe9
Merge pull request #31 from gaaji/GM-255
ansm6358 Feb 27, 2023
01cc816
유저 매너평가 조회
Feb 27, 2023
db176cd
유저 매너평가 조회 테스트
Feb 27, 2023
2084f2c
Merge pull request #32 from gaaji/GM-253
ansm6358 Feb 27, 2023
59bf17e
Merge pull request #33 from gaaji/GM-251
ansm6358 Feb 27, 2023
c583765
Merge pull request #34 from gaaji/dev
kgh2120 Mar 17, 2023
e7444d5
Create CODEOWNERS
kgh2120 Apr 11, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.java @gaaji/test
30 changes: 30 additions & 0 deletions .github/PR_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Issue# - Issue
## Description
>

## PR Type
- [ ] Hotfix
- [ ] Feature
- [ ] Code style update
- [ ] Refactor (code, package, etc.)
- [ ] Build (gradle, spring, etc)
- [ ] Documentation content changes (api docs, etc.)
- [ ] Infra (cloud, security, etc.)
- [ ] Other... Please describe :

## Related Issues
-

## Issues

### Test

***

## Related Files
- `file`

## Think About..

## Conclusion
>
78 changes: 78 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@


name: Java CI with Gradle

on:
pull_request:


permissions:
contents: read

env:
DOCKER_IMAGE: ghcr.io/gaaji/auth-service
VERSION: ${{ github.sha }}


jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Create secret.yml
env:
SECRET_CODE: ${{ secrets.SECRET }}
SECRET_DIR: src/main/resources
SECRET_FILE_NAME: secret.yml
run: echo $SECRET_CODE | base64 --decode > $SECRET_DIR/$SECRET_FILE_NAME

- name: Create oauth.yml
env:
SECRET_CODE: ${{ secrets.OAUTH }}
SECRET_DIR: src/main/resources
SECRET_FILE_NAME: oauth.yml
run: echo $SECRET_CODE | base64 --decode > $SECRET_DIR/$SECRET_FILE_NAME
- name: Create kafka.yml
env:
SECRET_CODE: ${{ secrets.KAFKA }}
SECRET_DIR: src/main/resources
SECRET_FILE_NAME: kafka.yml
run: echo $SECRET_CODE | base64 --decode > $SECRET_DIR/$SECRET_FILE_NAME
- name: Grant execute permission for gradlew
run: chmod +x gradlew


- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build

- name: Set up docker buildx
id: buildx
uses: docker/setup-buildx-action@v1

- name: Login to ghcr
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_TOKEN }}

- name: show directory
run: ls

- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: . # dockerfile이 있는 위치랑 맞춰주자
file: ./Dockerfile # 빌드할 Dockerfile이 있는 디렉토리
push: true
tags: ${{ env.DOCKER_IMAGE }}:local
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,7 @@ out/
.vscode/

### security
/src/main/resources/application-oauth.yml
/src/main/resources/oauth.yml
/src/main/resources/secret.yml
/src/main/resources/kafka.yml
/spy.log
5 changes: 5 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM openjdk:17-alpine
VOLUME /tmp
COPY build/libs/auth-0.0.1-SNAPSHOT.jar api.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker", "api.jar"]
8 changes: 7 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,13 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.kafka:spring-kafka'


implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'


// implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0")
implementation 'io.jsonwebtoken:jjwt:0.9.1'

Expand All @@ -40,6 +45,7 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'org.springframework.kafka:spring-kafka-test'
}

dependencyManagement {
Expand Down
30 changes: 30 additions & 0 deletions pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Issue# - Issue
## Description
>

## PR Type
- [ ] Hotfix
- [ ] Feature
- [ ] Code style update
- [ ] Refactor (code, package, etc.)
- [ ] Build (gradle, spring, etc)
- [ ] Documentation content changes (api docs, etc.)
- [ ] Infra (cloud, security, etc.)
- [ ] Other... Please describe :

## Related Issues
-

## Issues

### Test

***

## Related Files
- `file`

## Think About..

## Conclusion
>
2 changes: 2 additions & 0 deletions src/main/java/com/gaaji/auth/AuthApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient
@SpringBootApplication
public class AuthApplication {

Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/gaaji/auth/adaptor/KafkaProducer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.gaaji.auth.adaptor;

import com.gaaji.auth.event.NicknameChangedEvent;

public interface KafkaProducer {

void publishNicknameChangedEvent(NicknameChangedEvent event);

}
28 changes: 28 additions & 0 deletions src/main/java/com/gaaji/auth/adaptor/KafkaProducerImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.gaaji.auth.adaptor;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gaaji.auth.event.NicknameChangedEvent;
import lombok.RequiredArgsConstructor;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;

@RequiredArgsConstructor
@Service
public class KafkaProducerImpl implements KafkaProducer {

private final KafkaTemplate<String,String> kafkaTemplate;

@Override
public void publishNicknameChangedEvent(NicknameChangedEvent event) {

String nicknameChangedEvent = null;
try {
nicknameChangedEvent = new ObjectMapper().writeValueAsString(event);
kafkaTemplate.send("nickname-changed",nicknameChangedEvent);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}

}
}
7 changes: 7 additions & 0 deletions src/main/java/com/gaaji/auth/adaptor/S3Uploader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.gaaji.auth.adaptor;

import org.springframework.web.multipart.MultipartFile;

public interface S3Uploader {
String upload(MultipartFile multipartFile);
}
87 changes: 87 additions & 0 deletions src/main/java/com/gaaji/auth/adaptor/S3UploaderImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package com.gaaji.auth.adaptor;

import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.PutObjectRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

@RequiredArgsConstructor
@Service
public class S3UploaderImpl implements S3Uploader {


private final AmazonS3Client amazonS3Client;
@Value("${cloud.aws.s3.bucket}")
private String bucket;

@Override
public String upload(MultipartFile multipartFile) {
try {
validateIsClientSendImageFile(multipartFile);
return uploadFiles(multipartFile, "gaaji/profile");
} catch (IOException e) {
throw new IllegalArgumentException();
}
}

private void validateIsClientSendImageFile(MultipartFile multipartFile) {
if (!Objects.requireNonNull(multipartFile.getContentType()).contains("image")) {
throw new RuntimeException(); // FileTypeNotImageFileException()
}
}

private String uploadFiles(MultipartFile multipartFile, String dirName) throws IOException {
File uploadFile = convert(multipartFile) // 파일 변환할 수 없으면 에러
.orElseThrow(() -> new IllegalArgumentException(
"error: MultipartFile -> File convert fail"));
return upload(uploadFile, dirName);
}

private String upload(File uploadFile, String filePath) {
String fileName =
filePath + "/" + UUID.randomUUID() + uploadFile.getName(); // S3에 저장된 파일 이름
String uploadImageUrl = putS3(uploadFile, fileName); // s3로 업로드
removeNewFile(uploadFile);
return uploadImageUrl;
}

// S3로 업로드
private String putS3(File uploadFile, String fileName) {
amazonS3Client.putObject(new PutObjectRequest(bucket, fileName, uploadFile).withCannedAcl(
CannedAccessControlList.PublicRead));
return amazonS3Client.getUrl(bucket, fileName).toString();
}

// 로컬에 저장된 이미지 지우기
private void removeNewFile(File targetFile) {
if (targetFile.delete()) {
System.out.println("File delete success");
return;
}
System.out.println("File delete fail");
}

// 로컬에 파일 업로드 하기
private Optional<File> convert(MultipartFile file) throws IOException {
File convertFile = new File(
System.getProperty("user.dir") + "/" + file.getOriginalFilename());
if (convertFile.createNewFile()) { // 바로 위에서 지정한 경로에 File이 생성됨 (경로가 잘못되었다면 생성 불가능)
try (FileOutputStream fos = new FileOutputStream(
convertFile)) { // FileOutputStream 데이터를 파일에 바이트 스트림으로 저장하기 위함
fos.write(file.getBytes());
}
return Optional.of(convertFile);
}
return Optional.empty();
}

}
5 changes: 0 additions & 5 deletions src/main/java/com/gaaji/auth/adaptor/Sample.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.gaaji.auth.applicationservice;

import com.gaaji.auth.controller.dto.RetrieveResponse;

public interface AuthRetrieveService {

RetrieveResponse retrieveAuth(String authId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.gaaji.auth.applicationservice;

import com.gaaji.auth.controller.dto.RetrieveResponse;
import com.gaaji.auth.domain.Auth;
import com.gaaji.auth.domain.AuthId;
import com.gaaji.auth.exception.AuthIdNotFoundException;
import com.gaaji.auth.repository.AuthRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@RequiredArgsConstructor
@Transactional
@Service
public class AuthRetrieveServiceImpl implements
AuthRetrieveService {

private final AuthRepository authRepository;

@Override
public RetrieveResponse retrieveAuth(String authId) {
Auth auth = authRepository.findById(authId)
.orElseThrow(AuthIdNotFoundException::new);
return RetrieveResponse.of(authId, auth.getNickname(), auth.getMannerTemperature(), auth.getProfilePictureUrl());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.gaaji.auth.applicationservice;

import java.util.List;

import com.gaaji.auth.domain.BadManner;
import com.gaaji.auth.domain.GoodManner;

public interface MannerRetriveService {

List<GoodManner> retriveGoodMannerList();

List<BadManner> retriveBadMannerList();

}
Loading