diff --git a/db/seed-dev.sql b/db/seed-dev.sql index 1515b4b..21fadfe 100644 --- a/db/seed-dev.sql +++ b/db/seed-dev.sql @@ -2,8 +2,10 @@ -- bibimbap dev seed — 리뷰/댓글(W3-2) 기능 테스트용 더미 상황 -- ============================================================================= -- 목적: 새로 추가된 게임 리뷰/댓글 기능을 실제로 테스트할 수 있는 더미 데이터. --- 1) 로그인 가능한 테스트 계정 1개 (직접 로그인 → 리뷰/댓글 작성 테스트용) --- 2) 표시되는 더미 게임 1개 (테스트 계정 소유) +-- 1) 로그인 가능한 테스트 계정 2개 +-- - tester@bibimbap.local (role=USER — 일반 사용자 기능 테스트용) +-- - admin@bibimbap.local (role=ADMIN — 관리자 기능 테스트용) +-- 2) 표시되는 더미 게임 1개 (tester 계정 소유) -- 3) 이미 등록된 더미 리뷰 5개 (각자 다른 더미 유저 — game당 user 1리뷰 제약 때문) -- + 보너스: 더미 댓글 3개 -- @@ -14,7 +16,9 @@ -- 적용 (호스트 psql, 포트 5433): -- PGPASSWORD=change_me_local_dev psql -h localhost -p 5433 -U bibimbap -d bibimbap -f db/seed-dev.sql -- --- 로그인 자격: tester@bibimbap.local / test1234! (provider='email') +-- 로그인 자격: +-- tester@bibimbap.local / test1234! (role=USER, provider='email') +-- admin@bibimbap.local / test1234! (role=ADMIN, provider='email') -- password_hash 는 UserController.hashPassword 와 동일 알고리즘으로 사전 생성: -- PBKDF2WithHmacSHA256 / 210000 iter / 256-bit key / 16-byte salt, -- 포맷 = pbkdf2_sha256$$$. @@ -27,6 +31,7 @@ SET search_path TO dev; DO $$ DECLARE v_tester_id bigint; + v_admin_id bigint; v_game_id bigint; v_uid bigint; -- test1234! 의 사전 생성 해시 (위 알고리즘과 동일). @@ -34,7 +39,7 @@ DECLARE r RECORD; BEGIN -- ------------------------------------------------------------------------- - -- 1) 로그인 테스트 계정 (users + email identity) + -- 1a) 일반 사용자 테스트 계정 (role=USER) -- ------------------------------------------------------------------------- SELECT id INTO v_tester_id FROM users @@ -58,6 +63,35 @@ BEGIN (v_tester_id, 'email', 'tester@bibimbap.local', 'tester@bibimbap.local', c_pw_hash, '테스터'); END IF; + -- ------------------------------------------------------------------------- + -- 1b) 관리자 테스트 계정 (role=ADMIN) + -- ------------------------------------------------------------------------- + SELECT id INTO v_admin_id + FROM users + WHERE canonical_email = 'admin@bibimbap.local' AND is_delete IS NOT TRUE + LIMIT 1; + + IF v_admin_id IS NULL THEN + INSERT INTO users (display_name, canonical_email, role, status) + VALUES ('어드민', 'admin@bibimbap.local', 'ADMIN', 'ACTIVE') + RETURNING id INTO v_admin_id; + ELSE + -- 기존 계정 role 이 ADMIN 이 아닌 경우 보정 (재실행 안전) + UPDATE users SET role = 'ADMIN', permissions_epoch = permissions_epoch + 1 + WHERE id = v_admin_id AND role <> 'ADMIN'; + END IF; + + IF NOT EXISTS ( + SELECT 1 FROM user_auth_identities + WHERE provider = 'email' AND provider_user_id = 'admin@bibimbap.local' + AND is_delete IS NOT TRUE + ) THEN + INSERT INTO user_auth_identities + (user_id, provider, provider_user_id, email, password_hash, display_name) + VALUES + (v_admin_id, 'email', 'admin@bibimbap.local', 'admin@bibimbap.local', c_pw_hash, '어드민'); + END IF; + -- ------------------------------------------------------------------------- -- 2) 더미 게임 (테스트 계정 소유, 목록/상세에 표시되도록 visible) -- webgl_path / thumbnail_url 은 NULL — game-detail.jsp 가 빈 src 로 안전 처리. @@ -146,7 +180,7 @@ BEGIN END IF; END LOOP; - RAISE NOTICE 'seed-dev 완료: tester_id=%, game_id=%', v_tester_id, v_game_id; + RAISE NOTICE 'seed-dev 완료: tester_id=%, admin_id=%, game_id=%', v_tester_id, v_admin_id, v_game_id; END $$; -- 적용 결과 확인용 요약 (psql 실행 시 출력). diff --git a/docs/development/screenshot-guide.md b/docs/development/screenshot-guide.md index efa122b..b76e4a0 100644 --- a/docs/development/screenshot-guide.md +++ b/docs/development/screenshot-guide.md @@ -14,12 +14,12 @@ pip3 install playwright ## 테스트 계정 -| 항목 | 값 | -|---|---| -| 이메일 | `tester@bibimbap.local` | -| 비밀번호 | `test1234!` | +| 용도 | 이메일 | 비밀번호 | role | +|---|---|---|---| +| 일반 사용자 | `tester@bibimbap.local` | `test1234!` | USER | +| 관리자 | `admin@bibimbap.local` | `test1234!` | ADMIN | -seed: `db/seed-dev.sql` (tester = user3) +seed: `db/seed-dev.sql` ## 실행 @@ -34,8 +34,13 @@ python3 docs/development/screenshot-guide.py ### 전체 캡처 (로그인 포함 세부 화면) ```bash +# 일반 사용자로 캡처 SCREENSHOT_EMAIL=tester@bibimbap.local SCREENSHOT_PASSWORD='test1234!' \ python3 docs/development/screenshot-guide.py + +# 관리자로 캡처 (관리자 전용 UI 확인 시) +SCREENSHOT_EMAIL=admin@bibimbap.local SCREENSHOT_PASSWORD='test1234!' \ + python3 docs/development/screenshot-guide.py ``` 추가 7장 캡처: