diff --git a/backEnd/.gitignore b/backEnd/.gitignore index c2065bc2..06bebffa 100644 --- a/backEnd/.gitignore +++ b/backEnd/.gitignore @@ -35,3 +35,5 @@ out/ ### VS Code ### .vscode/ + +application-key.yml \ No newline at end of file diff --git a/backEnd/build.gradle b/backEnd/build.gradle index 480a9118..d1d3922d 100644 --- a/backEnd/build.gradle +++ b/backEnd/build.gradle @@ -1,34 +1,39 @@ plugins { - id 'java' - id 'org.springframework.boot' version '3.2.5' - id 'io.spring.dependency-management' version '1.1.4' + id 'java' + id 'org.springframework.boot' version '3.2.5' + id 'io.spring.dependency-management' version '1.1.4' } group = 'com.6quiz' version = '0.0.1-SNAPSHOT' java { - sourceCompatibility = '21' + sourceCompatibility = '21' } configurations { - compileOnly { - extendsFrom annotationProcessor - } + compileOnly { + extendsFrom annotationProcessor + } } repositories { - mavenCentral() + mavenCentral() } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-web' - compileOnly 'org.projectlombok:lombok' - developmentOnly 'org.springframework.boot:spring-boot-devtools' - annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' + implementation 'org.springframework.boot:spring-boot-starter-data-redis' + compileOnly 'org.projectlombok:lombok' + developmentOnly 'org.springframework.boot:spring-boot-devtools' + implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + runtimeOnly 'com.mysql:mysql-connector-j' } tasks.named('test') { - useJUnitPlatform() + useJUnitPlatform() } diff --git a/backEnd/src/main/java/com/quiz/ourClass/OurClassApplication.java b/backEnd/src/main/java/com/quiz/ourClass/OurClassApplication.java index 77dde429..7b5e562a 100644 --- a/backEnd/src/main/java/com/quiz/ourClass/OurClassApplication.java +++ b/backEnd/src/main/java/com/quiz/ourClass/OurClassApplication.java @@ -6,8 +6,10 @@ @SpringBootApplication public class OurClassApplication { - public static void main(String[] args) { - SpringApplication.run(OurClassApplication.class, args); - } + public static void main(String[] args) { + SpringApplication app = new SpringApplication(OurClassApplication.class); + app.setAdditionalProfiles("dev"); + app.run(args); + } } diff --git a/backEnd/src/main/java/com/quiz/ourClass/global/config/JasyptConfig.java b/backEnd/src/main/java/com/quiz/ourClass/global/config/JasyptConfig.java new file mode 100644 index 00000000..5c7f525b --- /dev/null +++ b/backEnd/src/main/java/com/quiz/ourClass/global/config/JasyptConfig.java @@ -0,0 +1,33 @@ +package com.quiz.ourClass.global.config; + +import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; +import org.jasypt.encryption.StringEncryptor; +import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; +import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableEncryptableProperties +public class JasyptConfig { + + @Value("${jasypt.encryptor.key}") + String key; + + @Bean(name = "jasyptStringEncryptor") + public StringEncryptor stringEncryptor() { + + PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); + SimpleStringPBEConfig config = new SimpleStringPBEConfig(); + config.setPassword(key); + config.setAlgorithm("PBEWithMD5AndDES"); + config.setKeyObtentionIterations("1000"); + config.setPoolSize("1"); + config.setProviderName("SunJCE"); + config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); + config.setStringOutputType("base64"); + encryptor.setConfig(config); + return encryptor; + } +} \ No newline at end of file diff --git a/backEnd/src/main/resources/application-db.yml b/backEnd/src/main/resources/application-db.yml new file mode 100644 index 00000000..2cd3090f --- /dev/null +++ b/backEnd/src/main/resources/application-db.yml @@ -0,0 +1,45 @@ +--- +spring: + config: + activate: + on-profile: db-dev + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: ENC(BK5guqCyFgcXz9XYMj6Ih6kXS/4ruxW1RVYIUxX1KXRFMmrja/o4MSck/tEjIzvhUGvAQPlX8Upj1TScOYre4LVrulpuc2AlanWUEpCRmJ1Bv6aJniivvQ==) + username: ENC(MYQ3aT1VJAbQINjDNwI63SdAy0klZQNS) + password: ENC(hubtzmA3yjR5UR4QidrFMhpzpZC3r4/q) + data: + mongodb: + host: ENC(RlbaApSBGOY9aZpoa/Q+8uahT22Cg02g) + port: ENC(HwQDnCJWUUC+uws46h5EQA==) + database: ENC(cSzOXYx2Vpfz+c7GMEPdLg==) + username: ENC(AmV/z9JTFSh4og1r4s4nKL4gwCOotshL) + password: ENC(V0DO82Nf0nvfjfFyQwzRfXABg1qBF3rGAwmGQacDLGA=) + authentication-database: ENC(z33qIA0NJs/P0DdjUma0gA==) + redis: + host: ENC(tCytoj2btfmkEuW78BEnFZAa1DZdT8lp) + port: ENC(knTIBM9PALqlEPofKSdVTQ==) + password: ENC(5tNR7TfRtIj69kmaPS/JC7P9oqwfW/ooTu9MD/GK6E4=) +--- +spring: + config: + activate: + on-profile: db-prod + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: ENC(Y+5AD5d380frx9HYUEyichTve4p/yUn8NtmNW2/4NQJogsrnIXUgBTuHn/lMNbovctNVRjti0p+gkyEJwPMgMHwCGgaopQ5oLZjMiQf0MUvvIKDqQywZ/Q==) + username: ENC(fVboFO5wpKzKNThGbtQLLkv2ziEk4Gra) + password: ENC(Kc3wHJBq99bC2b2BGILzyROMvdqxv6I+) + data: + mongodb: + host: ENC(UWHLjm0A12FTs4ZO6zEZ50x/C8q8tcHp) + port: ENC(hZDOVAQPdwQV4IcmgI4vrw==) + database: ENC(xZFJK/ae+pvLIA0sWntWBw==) + username: ENC(naBYQwC7jh6BkjGPvBxZvlnof82aw0ZP) + password: ENC(fZpGZe/l//EQWi3vdI4e923/k9oyfGFHzuHvUDUAHBI=) + authentication-database: ENC(U862aAGiOT9PZDT3e8nnHA==) + redis: + host: ENC(tCytoj2btfmkEuW78BEnFZAa1DZdT8lp) + port: ENC(knTIBM9PALqlEPofKSdVTQ==) + password: ENC(OjP5uzhau4FAOvF31CrSrfCCLxY6gRK9IELgunCEwBY=) +--- diff --git a/backEnd/src/main/resources/application.properties b/backEnd/src/main/resources/application.properties deleted file mode 100644 index db3ec8c3..00000000 --- a/backEnd/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=ourClass diff --git a/backEnd/src/main/resources/application.yml b/backEnd/src/main/resources/application.yml new file mode 100644 index 00000000..f866be00 --- /dev/null +++ b/backEnd/src/main/resources/application.yml @@ -0,0 +1,19 @@ +server: + port: 8080 + servlet: + encoding: + charset: UTF-8 + enabled: true + force: true + context-path: /api +--- +spring: + profiles: + group: + dev: + - db-dev + prod: + - db-prod + include: + - key + - db \ No newline at end of file