Files
K12Study/init/pg/auth/10_create_auth_tables.sql
2026-04-17 16:31:32 +08:00

76 lines
4.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

DROP SCHEMA IF EXISTS auth CASCADE;
CREATE SCHEMA IF NOT EXISTS auth;
DROP TABLE IF EXISTS auth.tb_auth_refresh_token CASCADE;
CREATE TABLE IF NOT EXISTS auth.tb_auth_refresh_token (
token_id VARCHAR(64) PRIMARY KEY,
session_id VARCHAR(64) NOT NULL,
client_type VARCHAR(32) NOT NULL DEFAULT 'WEB',
user_id VARCHAR(64) NOT NULL,
username VARCHAR(64) NOT NULL,
adcode VARCHAR(12),
tenant_id VARCHAR(64),
tenant_path VARCHAR(255),
dept_id VARCHAR(64),
dept_path VARCHAR(255),
refresh_token TEXT NOT NULL,
expire_at TIMESTAMP NOT NULL,
revoked BOOLEAN NOT NULL DEFAULT FALSE,
revoked_at TIMESTAMP,
last_active_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE auth.tb_auth_refresh_token IS '认证刷新令牌表';
COMMENT ON COLUMN auth.tb_auth_refresh_token.token_id IS '令牌ID';
COMMENT ON COLUMN auth.tb_auth_refresh_token.session_id IS '会话ID';
COMMENT ON COLUMN auth.tb_auth_refresh_token.client_type IS '客户端类型WEB/MINI';
COMMENT ON COLUMN auth.tb_auth_refresh_token.user_id IS '用户ID';
COMMENT ON COLUMN auth.tb_auth_refresh_token.username IS '用户名';
COMMENT ON COLUMN auth.tb_auth_refresh_token.adcode IS '行政区划编码';
COMMENT ON COLUMN auth.tb_auth_refresh_token.tenant_id IS '租户ID';
COMMENT ON COLUMN auth.tb_auth_refresh_token.tenant_path IS '租户路径';
COMMENT ON COLUMN auth.tb_auth_refresh_token.dept_id IS '部门ID';
COMMENT ON COLUMN auth.tb_auth_refresh_token.dept_path IS '部门路径';
COMMENT ON COLUMN auth.tb_auth_refresh_token.refresh_token IS '刷新令牌';
COMMENT ON COLUMN auth.tb_auth_refresh_token.expire_at IS '过期时间';
COMMENT ON COLUMN auth.tb_auth_refresh_token.revoked IS '是否撤销';
COMMENT ON COLUMN auth.tb_auth_refresh_token.revoked_at IS '撤销时间';
COMMENT ON COLUMN auth.tb_auth_refresh_token.last_active_at IS '最后活跃时间';
COMMENT ON COLUMN auth.tb_auth_refresh_token.created_at IS '创建时间';
DROP TABLE IF EXISTS auth.tb_auth_login_audit CASCADE;
CREATE TABLE IF NOT EXISTS auth.tb_auth_login_audit (
audit_id VARCHAR(64) PRIMARY KEY,
user_id VARCHAR(64),
username VARCHAR(64) NOT NULL,
client_type VARCHAR(32) NOT NULL DEFAULT 'WEB',
adcode VARCHAR(12),
tenant_id VARCHAR(64),
tenant_path VARCHAR(255),
dept_id VARCHAR(64),
dept_path VARCHAR(255),
login_ip VARCHAR(64),
login_status VARCHAR(32) NOT NULL,
failure_reason VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE auth.tb_auth_login_audit IS '登录审计日志表';
COMMENT ON COLUMN auth.tb_auth_login_audit.audit_id IS '审计ID';
COMMENT ON COLUMN auth.tb_auth_login_audit.user_id IS '用户ID';
COMMENT ON COLUMN auth.tb_auth_login_audit.username IS '用户名';
COMMENT ON COLUMN auth.tb_auth_login_audit.client_type IS '客户端类型';
COMMENT ON COLUMN auth.tb_auth_login_audit.adcode IS '行政区划编码';
COMMENT ON COLUMN auth.tb_auth_login_audit.tenant_id IS '租户ID';
COMMENT ON COLUMN auth.tb_auth_login_audit.tenant_path IS '租户路径';
COMMENT ON COLUMN auth.tb_auth_login_audit.dept_id IS '部门ID';
COMMENT ON COLUMN auth.tb_auth_login_audit.dept_path IS '部门路径';
COMMENT ON COLUMN auth.tb_auth_login_audit.login_ip IS '登录IP';
COMMENT ON COLUMN auth.tb_auth_login_audit.login_status IS '登录状态';
COMMENT ON COLUMN auth.tb_auth_login_audit.failure_reason IS '失败原因';
COMMENT ON COLUMN auth.tb_auth_login_audit.created_at IS '创建时间';
CREATE INDEX IF NOT EXISTS idx_auth_refresh_token_user ON auth.tb_auth_refresh_token(user_id);
CREATE INDEX IF NOT EXISTS idx_auth_refresh_token_user_client ON auth.tb_auth_refresh_token(user_id, client_type, session_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_auth_refresh_token_value ON auth.tb_auth_refresh_token(refresh_token);
CREATE INDEX IF NOT EXISTS idx_auth_login_audit_tenant ON auth.tb_auth_login_audit(tenant_id, created_at DESC);