From 4332518c22bf5205f02c10e2ddf1c23f4613e2dc Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 1 Aug 2026 22:44:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91=E5=A4=B1=E8=B4=A5=E7=BB=93=E6=9E=9C=E5=92=8C=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- assets/js/routes/user-center-auth.js | 6 ++++-- src/AKSRT/Identity/Provider/AliyunProvider.php | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/assets/js/routes/user-center-auth.js b/assets/js/routes/user-center-auth.js index 4c343354..2901b1ea 100644 --- a/assets/js/routes/user-center-auth.js +++ b/assets/js/routes/user-center-auth.js @@ -86,10 +86,12 @@ if (stageNode) stageNode.textContent = data.stage || data.status || '认证处理中'; if (messageNode) messageNode.textContent = data.message || '认证结果以站点服务端主动查询为准。'; if (continueLink) { - continueLink.hidden = !data.redirect_url; - if (data.redirect_url) continueLink.href = data.redirect_url; + var canContinue = data.next_action === 'poll' && data.redirect_url; + continueLink.hidden = !canContinue; + if (canContinue) continueLink.href = data.redirect_url; } if (manualButton) manualButton.hidden = data.next_action !== 'manual_or_retry'; + if (data.next_action === 'manual_or_retry' && manualForm) manualForm.hidden = true; shouldPoll = data.next_action === 'poll'; if (data.status === 'verified') { shouldPoll = false; diff --git a/src/AKSRT/Identity/Provider/AliyunProvider.php b/src/AKSRT/Identity/Provider/AliyunProvider.php index 246b3eba..7b1bdbfb 100644 --- a/src/AKSRT/Identity/Provider/AliyunProvider.php +++ b/src/AKSRT/Identity/Provider/AliyunProvider.php @@ -95,6 +95,10 @@ final class AliyunProvider implements ProviderInterface { return ProviderResult::passed(['request_id' => (string) ($response['RequestId'] ?? ''), 'result_code' => 'passed']); } $status = strtoupper((string) ($object['SubCode'] ?? $object['Status'] ?? $object['subCode'] ?? $object['status'] ?? '')); + $message = $object['MaterialInfo'] ?? $object['Message'] ?? $object['message'] ?? __('阿里云仍在处理认证结果', 'aksrt'); + if ($passed === 'F') { + return ProviderResult::failed($status ?: 'not_passed', sanitize_text_field((string) $message)); + } if ($object === []) { $debug = $this->response_debug_summary($response, $object); $this->log_debug('DescribeFaceVerify empty ResultObject', $debug); @@ -105,10 +109,9 @@ final class AliyunProvider implements ProviderInterface { ]); } if ($status === '' || in_array($status, ['PROCESSING', 'INIT', 'PENDING'], true)) { - $message = $object['MaterialInfo'] ?? $object['Message'] ?? $object['message'] ?? __('阿里云仍在处理认证结果', 'aksrt'); return ProviderResult::pending(['result_code' => $status ?: 'processing', 'message' => sanitize_text_field((string) $message)]); } - return ProviderResult::failed($status, sanitize_text_field((string) ($object['MaterialInfo'] ?? $object['Message'] ?? $object['message'] ?? __('实人认证未通过', 'aksrt')))); + return ProviderResult::failed($status, sanitize_text_field((string) $message)); } private function is_public_https_url(string $url): bool {