55 lines
2.6 KiB
SQL
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);
|