- 관리자 회원가입 허용 토글(app_setting), 공개 GET /auth/signup-enabled - 회원가입 봇차단: 허니팟(website) + IP 레이트리밋(Redis, 1h 5회) - 카드 알림: 현금 오선택 보정(카드 양방향 매칭+단일카드 자동), 광고 푸시 차단(승인신호 없는 광고성 표현 무시) - @MapperScan 에 admin.mapper 추가 - account.sql: 매 기동 wallet MODIFY 제거(라이브 락 위험) — CREATE 정의에 255 반영됨 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
33 lines
2.0 KiB
SQL
33 lines
2.0 KiB
SQL
-- ============================================================
|
|
-- 회원(member) 테이블 (MariaDB)
|
|
-- 로컬(아이디/비밀번호) + 소셜(네이버 등) 로그인 확장을 고려한 설계
|
|
-- 실행: 애플리케이션 기동 시 연결된 DB(sbdb)에 자동 생성됨
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS member (
|
|
id BIGINT NOT NULL AUTO_INCREMENT,
|
|
login_id VARCHAR(50) NULL COMMENT '로컬 로그인 아이디 (소셜 전용 계정은 NULL)',
|
|
password VARCHAR(100) NULL COMMENT 'BCrypt 해시 (소셜 전용 계정은 NULL)',
|
|
name VARCHAR(100) NOT NULL COMMENT '이름/닉네임',
|
|
email VARCHAR(255) NULL,
|
|
provider VARCHAR(20) NOT NULL DEFAULT 'LOCAL' COMMENT 'LOCAL / NAVER',
|
|
provider_id VARCHAR(100) NULL COMMENT '소셜 제공자 측 고유 사용자 ID',
|
|
role VARCHAR(20) NOT NULL DEFAULT 'USER' COMMENT 'USER / ADMIN',
|
|
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE' COMMENT 'ACTIVE / SUSPENDED / WITHDRAWN',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_member_login_id (login_id),
|
|
UNIQUE KEY uk_member_provider (provider, provider_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- ============================================================
|
|
-- 앱 전역 설정 (단일 행, id=1). 관리자 화면에서 변경.
|
|
-- ============================================================
|
|
CREATE TABLE IF NOT EXISTS app_setting (
|
|
id BIGINT NOT NULL,
|
|
signup_enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '회원가입 허용 여부(0=제한)',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
INSERT IGNORE INTO app_setting (id, signup_enabled) VALUES (1, 1);
|