Files
kefu/im/.deploy/backend-20260830/migrations/021_user_oauth_login.sql
T
2026-09-03 08:38:17 +08:00

55 lines
2.6 KiB
SQL

SET NAMES utf8mb4;
CREATE TABLE IF NOT EXISTS user_oauth_identities (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
provider VARCHAR(20) NOT NULL,
subject VARCHAR(191) NOT NULL,
user_id BIGINT UNSIGNED NOT NULL,
email VARCHAR(255) NOT NULL DEFAULT '',
display_name VARCHAR(100) NOT NULL DEFAULT '',
avatar_url VARCHAR(500) NOT NULL DEFAULT '',
last_login_at DATETIME(3) NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uk_user_oauth_provider_subject (provider, subject),
UNIQUE KEY uk_user_oauth_user_provider (user_id, provider),
CONSTRAINT fk_user_oauth_identity_user FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_oauth_states (
state_hash BINARY(32) NOT NULL,
provider VARCHAR(20) NOT NULL,
code_verifier VARCHAR(128) NOT NULL DEFAULT '',
expires_at DATETIME(3) NOT NULL,
used_at DATETIME(3) NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (state_hash),
KEY idx_user_oauth_state_expiry (expires_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS user_oauth_login_codes (
code_hash BINARY(32) NOT NULL,
provider VARCHAR(20) NOT NULL,
subject VARCHAR(191) NOT NULL,
email VARCHAR(255) NOT NULL DEFAULT '',
display_name VARCHAR(100) NOT NULL DEFAULT '',
avatar_url VARCHAR(500) NOT NULL DEFAULT '',
user_id BIGINT UNSIGNED NULL,
expires_at DATETIME(3) NOT NULL,
used_at DATETIME(3) NULL,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (code_hash),
KEY idx_user_oauth_code_expiry (expires_at),
KEY idx_user_oauth_code_user (user_id),
CONSTRAINT fk_user_oauth_code_user FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO system_configs (config_key, config_value, value_type, description) VALUES
('oauth.user.frontend_callback_url', 'http://localhost:5174/#/pages/auth/oauth-callback', 'string', '第三方登录完成后跳转的 uni-app H5 页面;生产环境必须使用 HTTPS'),
('oauth.user.wechat.enabled', 'false', 'boolean', '在客户端启用微信登录'),
('oauth.user.qq.enabled', 'false', 'boolean', '在客户端启用 QQ 登录'),
('oauth.user.github.enabled', 'false', 'boolean', '在客户端启用 GitHub 登录'),
('oauth.user.google.enabled', 'false', 'boolean', '在客户端启用 Google 登录')
ON DUPLICATE KEY UPDATE description = VALUES(description);