From d744dceda7e974167eb83d69e23663ae052a5721 Mon Sep 17 00:00:00 2001 From: DooHyoJeong Date: Tue, 14 Oct 2025 00:38:53 +0900 Subject: [PATCH 1/2] =?UTF-8?q?chore[infra]:=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EC=B9=B4=ED=91=B8=EC=B9=B4=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- infra/main.tf | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/infra/main.tf b/infra/main.tf index c7dfdfb..e8171ce 100644 --- a/infra/main.tf +++ b/infra/main.tf @@ -418,6 +418,25 @@ docker run -d \ -c 'ollama serve & sleep 5 && ollama pull daynice/kure-v1:567m && wait' echo "${var.github_access_token_1}" | docker login ghcr.io -u ${var.github_access_token_1_owner} --password-stdin +# zookeeper +docker run -d \ + --name kafka \ + --network common \ + -p 9092:9092 \ + -e KAFKA_BROKER_ID=1 \ + -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ + -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT \ + -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \ + -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ + confluentinc/cp-kafka:7.6.0 + +# kafka 설치 +docker run -d \ + --name zookeeper \ + --network common \ + -p 2181:2181 \ + -e ALLOW_ANONYMOUS_LOGIN=yes \ + bitnami/zookeeper:latest END_OF_FILE } From 1bbfb25d3c5e4df4412fb415cceef425ac2598c1 Mon Sep 17 00:00:00 2001 From: DooHyoJeong Date: Tue, 14 Oct 2025 00:39:09 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore[infra]:=20admin=20=EA=B3=84=EC=A0=95?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/lawyer/global/initData/InitData.java | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/backend/src/main/java/com/ai/lawyer/global/initData/InitData.java b/backend/src/main/java/com/ai/lawyer/global/initData/InitData.java index fade1a0..f350a81 100644 --- a/backend/src/main/java/com/ai/lawyer/global/initData/InitData.java +++ b/backend/src/main/java/com/ai/lawyer/global/initData/InitData.java @@ -34,30 +34,33 @@ public InitData(MemberRepository memberRepository, @Transactional public void run(String... args) throws Exception { //관리자 로그인 아이디 - String targetLoginId = "admin@example.com"; - log.info("InitData: checking password encoding for [{}]", targetLoginId); + List targetLoginIds = List.of("admin@example.com", "admin@test.com"); - Optional opt = memberRepository.findByLoginId(targetLoginId); - if (opt.isEmpty()) { - log.info("InitData: target account not found [{}]. 아무 작업도 수행하지 않습니다.", targetLoginId); - return; - } + for (String loginId : targetLoginIds) { + log.info("InitData: checking password encoding for [{}]", loginId); - Member member = opt.get(); - String stored = member.getPassword(); + Optional opt = memberRepository.findByLoginId(loginId); + if (opt.isEmpty()) { + log.info("InitData: target account not found [{}]. 아무 작업도 수행하지 않습니다.", loginId); + return; + } - if (isBcryptHash(stored)) { - log.info("InitData: {} 계정의 비밀번호는 이미 bcrypt 해시입니다. 변경 없음.", targetLoginId); - return; - } + Member member = opt.get(); + String stored = member.getPassword(); - // 여기서 stored는 평문으로 추정됨 -> 절대 로그에 찍지 않음 - String encoded = passwordEncoder.encode(stored); + if (isBcryptHash(stored)) { + log.info("InitData: {} 계정의 비밀번호는 이미 bcrypt 해시입니다. 변경 없음.", loginId); + return; + } - member.updatePassword(encoded); - memberRepository.save(member); + // 여기서 stored는 평문으로 추정됨 -> 절대 로그에 찍지 않음 + String encoded = passwordEncoder.encode(stored); - log.info("InitData: {} 계정의 비밀번호를 안전하게 암호화하여 저장했습니다.", targetLoginId); + member.updatePassword(encoded); + memberRepository.save(member); + + log.info("InitData: {} 계정의 비밀번호를 안전하게 암호화하여 저장했습니다.", loginId); + } } private boolean isBcryptHash(String s) {