fe48d5c604
- V9: admin_account(BCrypt) + admin_session 테이블 (회원 users/auth_session 과 분리) - /api/admin/auth: login(아이디/비번)·me·logout, AdminAuthInterceptor 로 /api/admin/** 보호 - 회원 자격의 관리자 개념 제거: MemberAdmin self-lock 제거, dev-login(DevAuthController) 삭제, 구 AdminInterceptor 삭제 - 관리자는 이제 회원(users)이 아님 → 회원관리 목록에서 미노출 - 시드: admin_account(admin/admin1234) - BCrypt용 spring-security-crypto (전체 Security 스타터 미사용) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
22 lines
919 B
SQL
22 lines
919 B
SQL
-- ============================================================
|
|
-- V9: 관리자 계정(아이디/비밀번호 로그인) — 회원(users)과 분리
|
|
-- ============================================================
|
|
|
|
CREATE TABLE admin_account (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
password_hash VARCHAR(255) NOT NULL, -- BCrypt
|
|
name VARCHAR(50) NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
last_login_at TIMESTAMPTZ
|
|
);
|
|
|
|
-- 관리자 세션 (회원 auth_session 과 분리)
|
|
CREATE TABLE admin_session (
|
|
token VARCHAR(64) PRIMARY KEY,
|
|
admin_id BIGINT NOT NULL REFERENCES admin_account(id) ON DELETE CASCADE,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
CREATE INDEX idx_admin_session_expires ON admin_session(expires_at);
|