优化了一些问题
This commit is contained in:
@@ -56,7 +56,12 @@ trait AuthReader {
|
||||
return (bool) self::get_value('close_signup', false) || self::close_signin();
|
||||
}
|
||||
|
||||
/** 是否关闭账密登录(仅允许社交登录) */
|
||||
/** OAuth 辅助注册只受总开关和明确的注册开关控制。 */
|
||||
public static function oauth_registration_enabled(): bool {
|
||||
return !self::close_sign() && !(bool) self::get_value('close_signup', false);
|
||||
}
|
||||
|
||||
/** 是否关闭账密登录(仅允许社交登录) */
|
||||
public static function close_signin(): bool {
|
||||
if (self::close_sign()) return true;
|
||||
return (bool) self::get_value('close_signin', false);
|
||||
|
||||
+22
-154
@@ -9,160 +9,28 @@ defined('ABSPATH') || exit;
|
||||
|
||||
class Integration {
|
||||
|
||||
/** 获取OAuth配置 */
|
||||
public static function get_oauth(): array {
|
||||
return get_option('aksrt_oauth', []);
|
||||
}
|
||||
|
||||
/** 检查OAuth平台是否已配置 */
|
||||
public static function oauth_configured(string $provider): bool {
|
||||
$oauth = self::get_oauth();
|
||||
return !empty($oauth[$provider]['client_id']) && !empty($oauth[$provider]['client_secret']);
|
||||
}
|
||||
|
||||
/** OAuth 代理登录模式: 'off' | 'server' | 'client' (schema 存 'close'→映射为 'off') */
|
||||
public static function oauth_proxy_mode(): string {
|
||||
$settings = Settings::get_all();
|
||||
$mode = sanitize_key((string) ($settings['oauth_proxy_mode'] ?? ''));
|
||||
if ($mode === '') {
|
||||
$oauth = self::get_oauth();
|
||||
$mode = $oauth['proxy']['mode'] ?? (!empty($settings['oauth_agent']) ? 'client' : 'off');
|
||||
}
|
||||
if ($mode === 'close') {
|
||||
$mode = 'off';
|
||||
}
|
||||
return in_array($mode, ['off', 'server', 'client'], true) ? $mode : 'off';
|
||||
}
|
||||
|
||||
/** OAuth 代理登录 HMAC 密钥 */
|
||||
public static function oauth_proxy_secret(): string {
|
||||
$settings = Settings::get_all();
|
||||
if (!empty($settings['oauth_proxy_secret'])) {
|
||||
return (string) $settings['oauth_proxy_secret'];
|
||||
}
|
||||
$oauth = self::get_oauth();
|
||||
return (string) ($oauth['proxy']['secret'] ?? '');
|
||||
}
|
||||
|
||||
/** OAuth 代理登录服务端地址(客户端模式使用) */
|
||||
public static function oauth_proxy_server_url(): string {
|
||||
$settings = Settings::get_all();
|
||||
if (!empty($settings['oauth_proxy_server_url'])) {
|
||||
return esc_url_raw((string) $settings['oauth_proxy_server_url']);
|
||||
}
|
||||
$oauth = self::get_oauth();
|
||||
return esc_url_raw((string) ($oauth['proxy']['server_url'] ?? ''));
|
||||
}
|
||||
|
||||
/** OAuth 代理登录允许的平台列表(服务端模式使用) */
|
||||
public static function oauth_proxy_allowed_providers(): array {
|
||||
$settings = Settings::get_all();
|
||||
$valid = ['github', 'gitee', 'qq', 'google', 'weibo', 'weixin', 'baidu', 'alipay'];
|
||||
if (isset($settings['oauth_proxy_server_providers']) && is_array($settings['oauth_proxy_server_providers'])) {
|
||||
return array_values(array_intersect($settings['oauth_proxy_server_providers'], $valid));
|
||||
}
|
||||
$oauth = self::get_oauth();
|
||||
$allowed = $oauth['proxy']['allowed_providers'] ?? ['github', 'gitee', 'qq', 'google'];
|
||||
return array_values(array_intersect($allowed, $valid));
|
||||
}
|
||||
|
||||
/** OAuth 代理登录启用的平台列表(客户端模式使用) */
|
||||
public static function oauth_proxy_client_providers(): array {
|
||||
$settings = Settings::get_all();
|
||||
$valid = ['github', 'gitee', 'qq', 'google', 'weibo', 'weixin', 'baidu', 'alipay'];
|
||||
if (isset($settings['oauth_proxy_client_providers']) && is_array($settings['oauth_proxy_client_providers'])) {
|
||||
return array_values(array_intersect($settings['oauth_proxy_client_providers'], $valid));
|
||||
}
|
||||
$oauth = self::get_oauth();
|
||||
$enabled = $oauth['proxy']['client_providers'] ?? ['github', 'gitee', 'qq', 'google'];
|
||||
return array_values(array_intersect($enabled, $valid));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信公众号登录完整配置
|
||||
*
|
||||
* @return array{gzh_type:string,token:string,token_nocheck:bool,encoding_aes_key:string,appid:string,appsecret:string,code_qrcode:string,code_keyword:string,code_reply:string,code_subscribe_reply:string,subscribe_msg:string,new_subscribe_msg:string,scan_msg:string,auto_reply_text:string,auto_reply_search:string,auto_reply_image:string,auto_reply_voice:string,auto_reply_default:string,gzh_menu:string,priority:bool,auto:bool,auto_expires:int}
|
||||
*/
|
||||
public static function get_weixingzh_settings(): array {
|
||||
$settings = Settings::get_all();
|
||||
|
||||
$gzh_type = sanitize_key((string) ($settings['weixingzh_gzh_type'] ?? 'service'));
|
||||
if (!in_array($gzh_type, ['service', 'subscribe'], true)) {
|
||||
$gzh_type = 'service';
|
||||
}
|
||||
|
||||
$auto_expires = max(0, min(86400, (int) ($settings['weixingzh_auto_expires'] ?? 3600)));
|
||||
|
||||
return [
|
||||
'gzh_type' => $gzh_type,
|
||||
'token' => (string) ($settings['weixingzh_token'] ?? ''),
|
||||
'token_nocheck' => !empty($settings['weixingzh_token_nocheck']),
|
||||
'encoding_aes_key' => (string) ($settings['weixingzh_encoding_aes_key'] ?? ''),
|
||||
'appid' => (string) ($settings['weixingzh_appid'] ?? ''),
|
||||
'appsecret' => (string) ($settings['weixingzh_appsecret'] ?? ''),
|
||||
'code_qrcode' => (string) ($settings['weixingzh_code_qrcode'] ?? ''),
|
||||
'code_keyword' => (string) ($settings['weixingzh_code_keyword'] ?? '登录'),
|
||||
'code_reply' => (string) ($settings['weixingzh_code_reply'] ?? ''),
|
||||
'code_subscribe_reply' => (string) ($settings['weixingzh_code_subscribe_reply'] ?? ''),
|
||||
'subscribe_msg' => (string) ($settings['weixingzh_subscribe_msg'] ?? ''),
|
||||
'new_subscribe_msg' => (string) ($settings['weixingzh_new_subscribe_msg'] ?? ''),
|
||||
'scan_msg' => (string) ($settings['weixingzh_scan_msg'] ?? ''),
|
||||
'auto_reply_text' => (string) ($settings['weixingzh_auto_reply_text'] ?? ''),
|
||||
'auto_reply_search' => (string) ($settings['weixingzh_auto_reply_search'] ?? ''),
|
||||
'auto_reply_image' => (string) ($settings['weixingzh_auto_reply_image'] ?? ''),
|
||||
'auto_reply_voice' => (string) ($settings['weixingzh_auto_reply_voice'] ?? ''),
|
||||
'auto_reply_default' => (string) ($settings['weixingzh_auto_reply_default'] ?? ''),
|
||||
'gzh_menu' => (string) ($settings['weixingzh_gzh_menu'] ?? ''),
|
||||
'priority' => !empty($settings['weixingzh_priority']),
|
||||
'auto' => !empty($settings['weixingzh_auto']),
|
||||
'auto_expires' => $auto_expires,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 OAuth 代理登录完整配置(aksrt_settings 优先,BC fallback aksrt_oauth)
|
||||
*
|
||||
* @return array{mode:string,secret:string,server_url:string,server_providers:array,client_providers:array,gzh_type:string}
|
||||
*/
|
||||
public static function get_oauth_proxy_settings(): array {
|
||||
$settings = Settings::get_all();
|
||||
$oauth = self::get_oauth();
|
||||
|
||||
$mode = sanitize_key((string) ($settings['oauth_proxy_mode'] ?? ''));
|
||||
if ($mode === '') {
|
||||
$mode = $oauth['proxy']['mode'] ?? (!empty($settings['oauth_agent']) ? 'client' : 'close');
|
||||
}
|
||||
if (!in_array($mode, ['close', 'server', 'client'], true)) {
|
||||
$mode = 'close';
|
||||
}
|
||||
|
||||
$secret = (string) ($settings['oauth_proxy_secret'] ?? ($oauth['proxy']['secret'] ?? ''));
|
||||
$server_url = esc_url_raw((string) ($settings['oauth_proxy_server_url'] ?? ($oauth['proxy']['server_url'] ?? '')));
|
||||
|
||||
$valid_providers = ['github', 'gitee', 'qq', 'google', 'weibo', 'weixin', 'baidu', 'alipay'];
|
||||
$server_providers = array_values(array_intersect(
|
||||
(array) ($settings['oauth_proxy_server_providers'] ?? ($oauth['proxy']['allowed_providers'] ?? ['github', 'gitee', 'qq', 'google'])),
|
||||
$valid_providers
|
||||
));
|
||||
$client_providers = array_values(array_intersect(
|
||||
(array) ($settings['oauth_proxy_client_providers'] ?? ($oauth['proxy']['client_providers'] ?? ['github', 'gitee', 'qq', 'google'])),
|
||||
$valid_providers
|
||||
));
|
||||
|
||||
$gzh_type = sanitize_key((string) ($settings['oauth_proxy_gzh_type'] ?? 'service'));
|
||||
if (!in_array($gzh_type, ['service', 'subscribe'], true)) {
|
||||
$gzh_type = 'service';
|
||||
}
|
||||
|
||||
return [
|
||||
'mode' => $mode,
|
||||
'secret' => $secret,
|
||||
'server_url' => $server_url,
|
||||
'server_providers' => $server_providers,
|
||||
'client_providers' => $client_providers,
|
||||
'gzh_type' => $gzh_type,
|
||||
];
|
||||
}
|
||||
/**
|
||||
* 获取微信公众号登录完整配置。
|
||||
*/
|
||||
public static function get_weixingzh_settings(): array {
|
||||
$settings = Settings::get_all();
|
||||
$gzh_type = sanitize_key((string) ($settings['weixingzh_gzh_type'] ?? 'service'));
|
||||
if (!in_array($gzh_type, ['service', 'subscribe'], true)) {
|
||||
$gzh_type = 'service';
|
||||
}
|
||||
return [
|
||||
'gzh_type' => $gzh_type,
|
||||
'token' => (string) ($settings['weixingzh_token'] ?? ''),
|
||||
'appid' => (string) ($settings['weixingzh_appid'] ?? ''),
|
||||
'appsecret' => (string) ($settings['weixingzh_appsecret'] ?? ''),
|
||||
'code_qrcode' => (string) ($settings['weixingzh_code_qrcode'] ?? ''),
|
||||
'code_keyword' => (string) ($settings['weixingzh_code_keyword'] ?? '登录'),
|
||||
'code_reply' => (string) ($settings['weixingzh_code_reply'] ?? ''),
|
||||
'subscribe_msg' => (string) ($settings['weixingzh_subscribe_msg'] ?? ''),
|
||||
'scan_msg' => (string) ($settings['weixingzh_scan_msg'] ?? ''),
|
||||
'priority' => !empty($settings['weixingzh_priority']),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部Tab完整配置
|
||||
|
||||
@@ -35,7 +35,6 @@ class Settings {
|
||||
*/
|
||||
public const STANDALONE_OPTION_KEYS = [
|
||||
'aksrt_mail_smtp',
|
||||
'aksrt_oauth',
|
||||
'aksrt_captcha_config',
|
||||
'aksrt_moderation_config',
|
||||
'aksrt_download_config',
|
||||
@@ -53,7 +52,6 @@ class Settings {
|
||||
*/
|
||||
public const SECRET_OPTION_KEYS = [
|
||||
'aksrt_mail_smtp',
|
||||
'aksrt_oauth',
|
||||
'aksrt_identity_secrets',
|
||||
];
|
||||
|
||||
@@ -730,78 +728,10 @@ class Settings {
|
||||
DisplayRuntime::save_friend_links($links);
|
||||
}
|
||||
|
||||
/** 获取OAuth配置 */
|
||||
public static function get_oauth(): array {
|
||||
return Integration::get_oauth();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 检查OAuth平台是否已配置 */
|
||||
public static function oauth_configured(string $provider): bool {
|
||||
return Integration::oauth_configured($provider);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ============================================
|
||||
// OAuth 代理登录 & 自动创建用户
|
||||
// ============================================
|
||||
|
||||
/** OAuth 代理登录模式: 'off' | 'server' | 'client' (schema 存 'close'→映射为 'off') */
|
||||
public static function oauth_proxy_mode(): string {
|
||||
return Integration::oauth_proxy_mode();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** OAuth 代理登录 HMAC 密钥 */
|
||||
public static function oauth_proxy_secret(): string {
|
||||
return Integration::oauth_proxy_secret();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** OAuth 代理登录服务端地址(客户端模式使用) */
|
||||
public static function oauth_proxy_server_url(): string {
|
||||
return Integration::oauth_proxy_server_url();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** OAuth 代理登录允许的平台列表(服务端模式使用) */
|
||||
public static function oauth_proxy_allowed_providers(): array {
|
||||
return Integration::oauth_proxy_allowed_providers();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** OAuth 代理登录启用的平台列表(客户端模式使用) */
|
||||
public static function oauth_proxy_client_providers(): array {
|
||||
return Integration::oauth_proxy_client_providers();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取微信公众号登录完整配置
|
||||
*
|
||||
* @return array{gzh_type:string,token:string,token_nocheck:bool,encoding_aes_key:string,appid:string,appsecret:string,code_qrcode:string,code_keyword:string,code_reply:string,code_subscribe_reply:string,subscribe_msg:string,new_subscribe_msg:string,scan_msg:string,auto_reply_text:string,auto_reply_search:string,auto_reply_image:string,auto_reply_voice:string,auto_reply_default:string,gzh_menu:string,priority:bool,auto:bool,auto_expires:int}
|
||||
*/
|
||||
public static function get_weixingzh_settings(): array {
|
||||
return Integration::get_weixingzh_settings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取 OAuth 代理登录完整配置(aksrt_settings 优先,BC fallback aksrt_oauth)
|
||||
*
|
||||
* @return array{mode:string,secret:string,server_url:string,server_providers:array,client_providers:array,gzh_type:string}
|
||||
*/
|
||||
public static function get_oauth_proxy_settings(): array {
|
||||
return Integration::get_oauth_proxy_settings();
|
||||
}
|
||||
/** 获取微信公众号登录完整配置。 */
|
||||
public static function get_weixingzh_settings(): array {
|
||||
return Integration::get_weixingzh_settings();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user