Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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 .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ out/
/src/main/resources/application-dev.yml
/src/main/resources/application.yml
/src/test/resources/application-test.yml
application.yml

# Elastic Beanstalk Files
.elasticbeanstalk/*
Expand Down
61 changes: 5 additions & 56 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.3.0'
id 'io.spring.dependency-management' version '1.1.5'
id 'org.jetbrains.kotlin.jvm'
id 'org.jetbrains.kotlin.plugin.spring' version '1.9.24'
}

ext {
Expand All @@ -13,7 +15,7 @@ version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
languageVersion = JavaLanguageVersion.of(19)
}
}

Expand Down Expand Up @@ -53,68 +55,15 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}

tasks.named('test') {
useJUnitPlatform()
}

task makeZipForDeploy(type: Exec) {
commandLine 'sh', '-c', '''
echo "Starting custom commands"
ls -la
pwd
echo "Current date:" $(date)
./gradlew clean build -Dspring.profiles.active=prod -x test
rm -rf deploy
mkdir deploy
cp build/libs/cardcapture-0.0.1-SNAPSHOT.jar deploy/
cp -R .platform deploy/
cp Procfile deploy/
rm -f deployment-package.zip
cd deploy
zip -r ../deployment-package.zip .
'''
}

task buildDockerCompose(type: Exec) {
commandLine 'sh', '-c', '''
echo "Starting custom commands"
ls -la
pwd
echo "Current date:" $(date)

# Step 1: Build the Spring Boot project
./gradlew clean build -Dspring.profiles.active=prod -x test

# Step 2: Prepare the deployment package
rm -rf deploy
mkdir deploy
cp build/libs/cardcapture-0.0.1-SNAPSHOT.jar deploy/
cp build/libs/cardcapture-0.0.1-SNAPSHOT.jar src/main/java/app/cardcapture/build
cp -R .platform deploy/
cp Procfile deploy/
rm -f deployment-package.zip
cd deploy
zip -r ../deployment-package.zip .

echo "Building Docker image"

# Step 3: Specify the path to Dockerfile
docker build -t cardcapture-app:latest -f /Users/inpink/Downloads/cardcapture/src/main/java/app/cardcapture/build/Dockerfile .
chmod -R 755 deploy
chmod 644 deploy/cardcapture-0.0.1-SNAPSHOT.jar

echo "Starting Docker Compose"

# Step 4: Run docker-compose from the correct path
docker-compose -f /Users/inpink/Downloads/cardcapture/src/main/java/app/cardcapture/build/docker-compose.yml down
docker-compose -f /Users/inpink/Downloads/cardcapture/src/main/java/app/cardcapture/build/docker-compose.yml up -d
'''
}

dependencyManagement {
imports {
mavenBom "org.springframework.ai:spring-ai-bom:$springAiVersion"
}
}
}
33 changes: 33 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
kotlin.code.style=official

### Project ###
group=app.cardcapture.account
version=1.0

### Spring ###
springDependencyManagementVersion=1.1.5
springbootVersion=3.3.0
springMockkVersion=4.0.0

### Jetbrain ###
jetbrainKotlinVersion=1.9.22
jvmTarget=19

### Database ###
mysqlConnectorVersion=8.0.33

### Kotest ###
kotestVersion=5.7.2
kotestExtensionSpringVersion=1.1.3

### TestContainer ###
testContainerVersion=1.19.3

### Netx ###
netxVersion=0.4.8

### H2version ###
h2Version=1.4.200

### SpringDoc ###
springDocVersion=2.3.0
49 changes: 49 additions & 0 deletions server/account/api/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
plugins {
id 'java'
id 'org.springframework.boot'
id 'io.spring.dependency-management'
id 'org.jetbrains.kotlin.jvm'
id 'org.jetbrains.kotlin.plugin.spring'
}

group = 'app.cardcapture.account'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(19)
}
}

repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
}

dependencies {
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 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
implementation 'com.auth0:java-jwt:3.18.1'
implementation 'io.sentry:sentry-spring-boot-starter-jakarta:7.14.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
implementation 'com.google.guava:guava:33.3.1-jre'
implementation project(':server:account:application')
implementation project(':server:common:api')
// implementation project(":server:user:api")


compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

runtimeOnly 'com.mysql:mysql-connector-j'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file not shown.
7 changes: 7 additions & 0 deletions server/account/api/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.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package app.cardcapture.auth.google.controller;
package app.cardcapture.account.api;

import app.cardcapture.auth.google.service.GoogleAuthService;
import app.cardcapture.auth.jwt.dto.JwtResponseDto;
import app.cardcapture.auth.jwt.dto.RefreshTokenRequestDto;
import app.cardcapture.auth.jwt.service.JwtComponent;
import app.cardcapture.common.dto.SuccessResponseDto;
import app.cardcapture.account.api.request.RefreshTokenRequestDto;
import app.cardcapture.account.api.response.JwtResponseDto;
import app.cardcapture.account.api.service.GoogleAuthService;
import app.cardcapture.account.api.service.JwtComponent;
import app.cardcapture.common.api.dto.SuccessResponseDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
Expand All @@ -29,7 +28,6 @@ public class GoogleAuthController {

@GetMapping("/redirect")
@Operation(summary = "구글 리다이렉트 엔드포인트", description = "구글 리다이렉트를 통해 받은 auth code를 받습니다. auth code를 이용하여 유저 정보를 가져올 것입니다.")
@Transactional
public ResponseEntity<SuccessResponseDto<JwtResponseDto>> getGoogleRedirect(
@RequestParam(name = "code") String authCode
) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package app.cardcapture.auth.jwt.controller;
package app.cardcapture.account.api;

import app.cardcapture.auth.jwt.service.TokenBlacklistService;
import app.cardcapture.common.dto.SuccessResponseDto;
import app.cardcapture.account.api.service.TokenBlacklistService;
import app.cardcapture.common.api.dto.SuccessResponseDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.google.config;
package app.cardcapture.account.api.config;

import lombok.Getter;
import lombok.Setter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.jwt.config;
package app.cardcapture.account.api.config;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package app.cardcapture.auth.jwt.domain;
package app.cardcapture.account.api.domain;

import app.cardcapture.common.utils.TimeUtils;
import app.cardcapture.common.api.utils.TimeUtils;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.List;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.jwt.domain.entity;
package app.cardcapture.account.api.domain.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
Expand All @@ -7,7 +7,6 @@
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.jwt.exception;
package app.cardcapture.account.api.domain.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.jwt.exception;
package app.cardcapture.account.api.domain.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package app.cardcapture.auth.jwt.filter;

import app.cardcapture.auth.jwt.domain.Claims;
import app.cardcapture.auth.jwt.service.JwtComponent;
import app.cardcapture.common.dto.ErrorCode;
import app.cardcapture.common.dto.ErrorResponseDto;
import app.cardcapture.security.PrincipalDetails;
import app.cardcapture.security.PrincipalUserDetailsService;
package app.cardcapture.account.api.filter;

import app.cardcapture.account.api.domain.Claims;
import app.cardcapture.account.api.service.JwtComponent;
import app.cardcapture.common.api.dto.ErrorCode;
import app.cardcapture.common.api.dto.ErrorResponseDto;
import app.cardcapture.security.api.PrincipalDetails;
import app.cardcapture.security.api.PrincipalUserDetailsService;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package app.cardcapture.auth.jwt.repository;
package app.cardcapture.account.api.repository;

import app.cardcapture.auth.jwt.domain.entity.TokenBlacklist;
import app.cardcapture.account.api.domain.entity.TokenBlacklist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.google.dto;
package app.cardcapture.account.api.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.jwt.dto;
package app.cardcapture.account.api.request;

import jakarta.validation.constraints.NotBlank;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.google.dto;
package app.cardcapture.account.api.response;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.cardcapture.auth.jwt.dto;
package app.cardcapture.account.api.response;

import jakarta.validation.constraints.NotBlank;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package app.cardcapture.auth.google.service;
package app.cardcapture.account.api.service;

import app.cardcapture.auth.google.config.GoogleAuthConfig;
import app.cardcapture.auth.google.dto.GoogleTokenResponseDto;
import app.cardcapture.auth.jwt.dto.JwtResponseDto;
import app.cardcapture.auth.jwt.service.JwtComponent;
import app.cardcapture.common.dto.ErrorCode;
import app.cardcapture.common.exception.BusinessLogicException;
import app.cardcapture.user.domain.entity.User;
import app.cardcapture.user.dto.UserGoogleAuthResponseDto;
import app.cardcapture.user.repository.UserRepository;
import app.cardcapture.user.service.UserService;
import app.cardcapture.account.api.config.GoogleAuthConfig;
import app.cardcapture.account.api.response.GoogleTokenResponseDto;
import app.cardcapture.account.api.response.JwtResponseDto;
import app.cardcapture.common.api.dto.ErrorCode;
import app.cardcapture.common.api.exception.BusinessLogicException;
import app.cardcapture.user.api.domain.entity.User;
import app.cardcapture.user.api.dto.UserGoogleAuthResponseDto;
import app.cardcapture.user.api.repository.UserRepository;
import app.cardcapture.user.api.service.UserService;
import com.google.common.annotations.VisibleForTesting;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -31,6 +30,7 @@ public class GoogleAuthService {
private final UserRepository userRepository;
private final UserService userService;

// transactional 여기로 옮겨야함
public JwtResponseDto handleGoogleRedirect(String authCode) {
User user = handleGoogleAuthentication(authCode);
return jwtComponent.issueJwt(user);
Expand Down
Loading