Seed ACS test login accounts

This commit is contained in:
unknown
2026-07-14 16:02:58 +09:00
parent 7c8bd37b12
commit 9562766320
2 changed files with 52 additions and 0 deletions

View File

@@ -63,3 +63,7 @@ Node 서버에 Auth API를 추가했다.
2026-07-14 사용자가 `a/1`로 운영 URL에서 다시 로그인 시도했으나 404가 재현되었다. 2026-07-14 사용자가 `a/1`로 운영 URL에서 다시 로그인 시도했으나 404가 재현되었다.
판단: 운영 서버가 아직 Auth API 추가 코드로 재배포되지 않은 상태다. 로컬 변경분을 원격 저장소에 push하고 Coolify 재배포가 완료된 뒤 다시 테스트해야 한다. 판단: 운영 서버가 아직 Auth API 추가 코드로 재배포되지 않은 상태다. 로컬 변경분을 원격 저장소에 push하고 Coolify 재배포가 완료된 뒤 다시 테스트해야 한다.
2026-07-14 Auth API 커밋 배포 후 `POST /api/auth/login` 응답이 404에서 500으로 변경되었다.
판단: 라우터는 배포에 반영되었고, 남은 문제는 운영 DB의 사용자 seed 또는 로그인 처리 중 DB 상태 문제로 좁혀졌다. 다음 배포부터 테스트 계정이 자동 보장되도록 `migrations/005_seed_test_users.sql`을 추가한다.

View File

@@ -0,0 +1,48 @@
-- Ensure baseline ACS test accounts exist in the Node/PostgreSQL deployment.
-- Passwords:
-- admin/security/host = ChangeMe123!
-- a/s/h = 1
WITH upserted AS (
INSERT INTO users (
created_at,
updated_at,
username,
password_hash,
full_name,
email,
department,
must_change_password,
enabled,
locked
)
VALUES
(now(), now(), 'admin', '$2a$12$7FBM5I4IOmKQHmBbAm2AAu3HQ3FvOkazzuBk1Hnd.gr68UekEusEa', 'Admin', 'admin@itcenter.local', 'IT Ops', TRUE, TRUE, FALSE),
(now(), now(), 'security', '$2a$12$7FBM5I4IOmKQHmBbAm2AAu3HQ3FvOkazzuBk1Hnd.gr68UekEusEa', 'Security', 'security@itcenter.local', 'Security', TRUE, TRUE, FALSE),
(now(), now(), 'host', '$2a$12$7FBM5I4IOmKQHmBbAm2AAu3HQ3FvOkazzuBk1Hnd.gr68UekEusEa', 'Host', 'host@itcenter.local', 'Dev Team', TRUE, TRUE, FALSE),
(now(), now(), 'a', '$2a$12$aQ84.8Z4w/9GLG4gJkBu7OAHU3v9/BR5ESLimxpnETZ.pxnzylgkW', 'Admin', 'a@itcenter.local', 'IT Ops', FALSE, TRUE, FALSE),
(now(), now(), 's', '$2a$12$aQ84.8Z4w/9GLG4gJkBu7OAHU3v9/BR5ESLimxpnETZ.pxnzylgkW', 'Security', 's@itcenter.local', 'Security', FALSE, TRUE, FALSE),
(now(), now(), 'h', '$2a$12$aQ84.8Z4w/9GLG4gJkBu7OAHU3v9/BR5ESLimxpnETZ.pxnzylgkW', 'Host', 'h@itcenter.local', 'Dev Team', FALSE, TRUE, FALSE)
ON CONFLICT (username) DO UPDATE
SET updated_at = now(),
password_hash = EXCLUDED.password_hash,
full_name = EXCLUDED.full_name,
email = EXCLUDED.email,
department = EXCLUDED.department,
must_change_password = EXCLUDED.must_change_password,
enabled = TRUE,
locked = FALSE
RETURNING id, username
)
DELETE FROM user_roles
WHERE user_id IN (SELECT id FROM upserted);
INSERT INTO user_roles (user_id, role)
SELECT id, role
FROM (
SELECT id, 'ADMIN' AS role FROM users WHERE username IN ('admin', 'a')
UNION ALL
SELECT id, 'SECURITY' AS role FROM users WHERE username IN ('security', 's')
UNION ALL
SELECT id, 'HOST' AS role FROM users WHERE username IN ('host', 'h')
) seeded_roles;