From 8ffad799e98b8d5d34993d65afc0d75c75dfc1cb Mon Sep 17 00:00:00 2001 From: Johngreen Date: Mon, 9 Mar 2026 00:26:04 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20seed=EC=97=90=EC=84=9C=20argon2=20?= =?UTF-8?q?=EB=9F=B0=ED=83=80=EC=9E=84=20=EC=9D=98=EC=A1=B4=EC=84=B1=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(Docker=20Alpine=20=ED=98=B8=ED=99=98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/database/package.json | 1 - packages/database/seeds/seed.ts | 6 ++++-- pnpm-lock.yaml | 9 ++++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/database/package.json b/packages/database/package.json index 08b5e9e..65bb8a4 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -30,7 +30,6 @@ }, "devDependencies": { "@types/node": "^22.10.2", - "argon2": "^0.44.0", "prisma": "^6.1.0", "tsup": "^8.3.5", "tsx": "^4.19.0", diff --git a/packages/database/seeds/seed.ts b/packages/database/seeds/seed.ts index b403760..00b8e33 100644 --- a/packages/database/seeds/seed.ts +++ b/packages/database/seeds/seed.ts @@ -2,7 +2,9 @@ import { PrismaClient } from '@prisma/client'; import { readFileSync } from 'node:fs'; import { resolve, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; -import argon2 from 'argon2'; +// Pre-generated argon2 hash for admin password (avoids native compilation dependency in Docker Alpine) +const ADMIN_PASSWORD_HASH = + '$argon2id$v=19$m=65536,t=3,p=4$MMkWVs1hKzKPp5P93KLITw$fhiUqTZMkR0ucwQNteHskMn9UIrD/7aUXZPUdzWYloE'; const __dirname = dirname(fileURLToPath(import.meta.url)); @@ -152,7 +154,7 @@ async function seedAdminUser(): Promise { return; } - const passwordHash = await argon2.hash('admin123'); + const passwordHash = ADMIN_PASSWORD_HASH; const user = await prisma.user.create({ data: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 216ced8..d861d6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -202,9 +202,6 @@ importers: '@types/node': specifier: ^22.10.2 version: 22.19.15 - argon2: - specifier: ^0.44.0 - version: 0.44.0 prisma: specifier: ^6.1.0 version: 6.19.2(typescript@5.9.3) @@ -394,6 +391,7 @@ packages: /@epic-web/invariant@1.0.0: resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + dev: false /@esbuild/aix-ppc64@0.21.5: resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -1284,6 +1282,7 @@ packages: /@phc/format@1.0.0: resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} engines: {node: '>=10'} + dev: false /@prisma/client@6.19.2(prisma@6.19.2)(typescript@5.9.3): resolution: {integrity: sha512-gR2EMvfK/aTxsuooaDA32D8v+us/8AAet+C3J1cc04SW35FPdZYgLF+iN4NDLUgAaUGTKdAB0CYenu1TAgGdMg==} @@ -2140,6 +2139,7 @@ packages: cross-env: 10.1.0 node-addon-api: 8.6.0 node-gyp-build: 4.8.4 + dev: false /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2452,6 +2452,7 @@ packages: dependencies: '@epic-web/invariant': 1.0.0 cross-spawn: 7.0.6 + dev: false /cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -4053,6 +4054,7 @@ packages: /node-addon-api@8.6.0: resolution: {integrity: sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==} engines: {node: ^18 || ^20 || >= 21} + dev: false /node-exports-info@1.6.0: resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} @@ -4070,6 +4072,7 @@ packages: /node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + dev: false /nypm@0.6.5: resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==}