feat(sms): align provider and verification flow
This commit is contained in:
@@ -154,20 +154,14 @@ class ExtensionRuntime {
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取短信接口设置
|
||||
*
|
||||
* 注意:所有供应商共用 sms_access_key / sms_access_secret(通用凭证字段)。
|
||||
* 各供应商特有的额外字段使用各自的命名空间(sms_tencent_*, sms_huawei_*, sms_custom_*)。
|
||||
* sms_sign_name / sms_template_code 为所有供应商共用。
|
||||
*/
|
||||
/** 获取短信接口设置。 */
|
||||
public static function get_sms_settings(): array {
|
||||
$settings = Settings::get_all();
|
||||
|
||||
$provider = sanitize_key((string) ($settings['sms_provider'] ?? 'aliyun'));
|
||||
$allowed_providers = ['aliyun', 'tencent', 'huawei', 'custom'];
|
||||
if (!in_array($provider, $allowed_providers, true)) {
|
||||
$provider = 'aliyun';
|
||||
$sdk = sanitize_key((string) ($settings['sms_sdk'] ?? 'null'));
|
||||
$allowed_sdks = ['null', 'ali', 'tencent', 'smsbao'];
|
||||
if (!in_array($sdk, $allowed_sdks, true)) {
|
||||
$sdk = 'null';
|
||||
}
|
||||
|
||||
$ali_api_type = sanitize_key((string) ($settings['sms_ali_api_type'] ?? 'sms'));
|
||||
@@ -175,53 +169,26 @@ class ExtensionRuntime {
|
||||
$ali_api_type = 'sms';
|
||||
}
|
||||
|
||||
$code_length = max(4, min(8, (int) ($settings['sms_code_length'] ?? 6)));
|
||||
$code_expire = max(60, min(600, (int) ($settings['sms_code_expire'] ?? 300)));
|
||||
$rate_limit = max(10, (int) ($settings['sms_rate_limit'] ?? 60));
|
||||
$daily_limit = max(1, (int) ($settings['sms_daily_limit'] ?? 10));
|
||||
|
||||
return [
|
||||
'sms_enabled' => !empty($settings['sms_enabled']),
|
||||
'sms_provider' => $provider,
|
||||
'sms_sdk' => $sdk,
|
||||
'sms_number_limit_ch' => !isset($settings['sms_number_limit_ch']) || !empty($settings['sms_number_limit_ch']),
|
||||
'sms_access_key' => (string) ($settings['sms_access_key'] ?? ''),
|
||||
'sms_access_secret' => (string) ($settings['sms_access_secret'] ?? ''),
|
||||
'sms_sign_name' => (string) ($settings['sms_sign_name'] ?? ''),
|
||||
'sms_template_code' => (string) ($settings['sms_template_code'] ?? ''),
|
||||
'sms_code_length' => $code_length,
|
||||
'sms_code_expire' => $code_expire,
|
||||
'sms_rate_limit' => $rate_limit,
|
||||
'sms_daily_limit' => $daily_limit,
|
||||
'sms_notify_bind' => !isset($settings['sms_notify_bind']) || !empty($settings['sms_notify_bind']),
|
||||
'sms_notify_login' => !empty($settings['sms_notify_login']),
|
||||
'sms_notify_register' => !isset($settings['sms_notify_register']) || !empty($settings['sms_notify_register']),
|
||||
'sms_notify_reset_password' => !isset($settings['sms_notify_reset_password']) || !empty($settings['sms_notify_reset_password']),
|
||||
// 阿里云特有
|
||||
// 阿里云
|
||||
'sms_ali_api_type' => $ali_api_type,
|
||||
'sms_ali_keyid' => (string) ($settings['sms_ali_keyid'] ?? ''),
|
||||
'sms_ali_keysecret' => (string) ($settings['sms_ali_keysecret'] ?? ''),
|
||||
'sms_ali_sign_name' => (string) ($settings['sms_ali_sign_name'] ?? ''),
|
||||
'sms_ali_template_code' => (string) ($settings['sms_ali_template_code'] ?? ''),
|
||||
'sms_region_id' => (string) ($settings['sms_region_id'] ?? 'cn-hangzhou'),
|
||||
'sms_aliyun_verified' => !empty($settings['sms_aliyun_verified']),
|
||||
// 腾讯云特有
|
||||
// 腾讯云
|
||||
'sms_tencent_app_id' => (string) ($settings['sms_tencent_app_id'] ?? ''),
|
||||
'sms_tencent_app_key' => (string) ($settings['sms_tencent_app_key'] ?? ''),
|
||||
'sms_tencent_secret_id' => (string) ($settings['sms_tencent_secret_id'] ?? ''),
|
||||
'sms_tencent_secret_key' => (string) ($settings['sms_tencent_secret_key'] ?? ''),
|
||||
'sms_tencent_region' => (string) ($settings['sms_tencent_region'] ?? 'ap-guangzhou'),
|
||||
'sms_tencent_verified' => !empty($settings['sms_tencent_verified']),
|
||||
// 华为云特有
|
||||
'sms_huawei_sender' => (string) ($settings['sms_huawei_sender'] ?? ''),
|
||||
'sms_huawei_signature' => (string) ($settings['sms_huawei_signature'] ?? ''),
|
||||
'sms_huawei_endpoint' => (string) ($settings['sms_huawei_endpoint'] ?? ''),
|
||||
'sms_huawei_verified' => !empty($settings['sms_huawei_verified']),
|
||||
// 自定义接口特有
|
||||
'sms_custom_url' => (string) ($settings['sms_custom_url'] ?? ''),
|
||||
'sms_custom_method' => (string) ($settings['sms_custom_method'] ?? 'POST'),
|
||||
'sms_custom_auth_type' => (string) ($settings['sms_custom_auth_type'] ?? 'header'),
|
||||
'sms_custom_auth_key' => (string) ($settings['sms_custom_auth_key'] ?? ''),
|
||||
'sms_custom_auth_value' => (string) ($settings['sms_custom_auth_value'] ?? ''),
|
||||
'sms_custom_headers' => (string) ($settings['sms_custom_headers'] ?? ''),
|
||||
'sms_custom_body' => (string) ($settings['sms_custom_body'] ?? ''),
|
||||
'sms_custom_success_rule' => (string) ($settings['sms_custom_success_rule'] ?? ''),
|
||||
'sms_custom_verified' => !empty($settings['sms_custom_verified']),
|
||||
'sms_tencent_sign_name' => (string) ($settings['sms_tencent_sign_name'] ?? ''),
|
||||
'sms_tencent_template_id' => (string) ($settings['sms_tencent_template_id'] ?? ''),
|
||||
// 短信宝
|
||||
'sms_smsbao_username' => (string) ($settings['sms_smsbao_username'] ?? ''),
|
||||
'sms_smsbao_password' => (string) ($settings['sms_smsbao_password'] ?? ''),
|
||||
'sms_smsbao_api_key' => (string) ($settings['sms_smsbao_api_key'] ?? ''),
|
||||
'sms_smsbao_template' => (string) ($settings['sms_smsbao_template'] ?? ''),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user