feat(identity): align auth flow with reference theme

This commit is contained in:
kate522 committed 2026-10-04 21:10:12 +08:00
1 parent 5a17b399a0
commit 59901b9e10
34 files changed
+753 -3871

No files matched your search

+7 -45
View File
@@ -105,7 +105,7 @@ class UserRuntime {
* User identity, level, medal, and report governance settings.
*
* @return array{
* verify:array{enabled:bool,public_display:bool,allow_apply:bool,disable_desc:string,desc:string,types:array<string,array{slug:string,label:string,badge_text:string,fee:string,free_applications:int,require_real_name:bool}>},
* verify:array{enabled:bool,public_display:bool,allow_apply:bool,disable_desc:string,desc:string,minimum_level:int},
* level:array{enabled:bool,public_display:bool,source:string,label_prefix:string,thresholds:array<int,int>},
* medal:array{enabled:bool,public_display:bool,limit:int,categories:array<int,array{cat_name:string,items:array<int,array{slug:string,name:string,desc:string,icon:string,get_type:string,get_val:int}>}>,items_by_slug:array<string,array{slug:string,name:string,desc:string,icon:string,get_type:string,get_val:int,cat_name:string}>},
* badge:array{enabled:bool,public_display:bool,limit:int,dictionary:array<int,array{slug:string,label:string,tone:string,desc:string,icon_url?:string}>},
@@ -114,41 +114,16 @@ class UserRuntime {
*/
public static function get_user_identity_settings(): array {
$settings = Settings::get_all();
$verify_types = [
'personal' => [
'slug' => 'personal',
'label' => __('个人认证', 'aksrt'),
'badge_text' => trim((string) ($settings['user_verify_personal_badge_text'] ?? '')) ?: __('个人认证', 'aksrt'),
'fee' => self::identity_fee_setting($settings, 'user_verify_personal_fee'),
'free_applications' => max(0, (int) ($settings['user_verify_personal_free_applications'] ?? 0)),
'require_real_name' => true,
],
'enterprise' => [
'slug' => 'enterprise',
'label' => __('企业认证', 'aksrt'),
'badge_text' => trim((string) ($settings['user_verify_enterprise_badge_text'] ?? '')) ?: __('企业认证', 'aksrt'),
'fee' => self::identity_fee_setting($settings, 'user_verify_enterprise_fee'),
'free_applications' => max(0, (int) ($settings['user_verify_enterprise_free_applications'] ?? 0)),
'require_real_name' => true,
],
];
$medal = self::parse_medal_catalog($settings);
$provider = sanitize_key((string) ($settings['user_verify_provider'] ?? 'aliyun'));
if (!in_array($provider, ['aliyun', 'tencent'], true)) {
$provider = 'aliyun';
}
return [
'verify' => [
'enabled' => !isset($settings['user_verify_enabled']) || !empty($settings['user_verify_enabled']),
'public_display' => !isset($settings['user_verify_public_display']) || !empty($settings['user_verify_public_display']),
'allow_apply' => !isset($settings['user_verify_allow_apply']) || !empty($settings['user_verify_allow_apply']),
'disable_desc' => (string) ($settings['user_verify_disable_desc'] ?? ''),
'desc' => (string) ($settings['user_verify_desc'] ?? ''),
'provider' => $provider,
'allow_manual_fallback' => !isset($settings['user_verify_allow_manual_fallback']) || !empty($settings['user_verify_allow_manual_fallback']),
'poll_interval_seconds' => max(3, min(60, (int) ($settings['user_verify_poll_interval_seconds'] ?? 5))),
'types' => $verify_types,
'enabled' => !isset($settings['user_auth_s']) || !empty($settings['user_auth_s']),
'public_display' => !isset($settings['user_auth_s']) || !empty($settings['user_auth_s']),
'allow_apply' => !isset($settings['user_auth_apply_s']) || !empty($settings['user_auth_apply_s']),
'disable_desc' => (string) ($settings['user_auth_apply_disable_desc'] ?? ''),
'desc' => (string) ($settings['user_auth_apply_desc'] ?? ''),
'minimum_level' => max(0, min(30, (int) ($settings['user_auth_apply_limit_level'] ?? 0))),
],
'level' => [
'enabled' => !isset($settings['user_level_s']) || !empty($settings['user_level_s']),
@@ -179,19 +154,6 @@ class UserRuntime {
];
}
/** @param array<string,mixed> $settings */
private static function identity_fee_setting(array $settings, string $key): string {
$value = array_key_exists($key, $settings) ? $settings[$key] : '0.00';
if (!is_string($value)) {
return '';
}
try {
return \AKSRT\Ledger\AssetAmount::balance(trim($value))->decimal();
} catch (\InvalidArgumentException $e) {
return '';
}
}
/**
* 禁封/举报分区的运行时读取。
*