优化了一些问题

This commit is contained in:
2026-08-29 22:03:48 +08:00
parent 1d904e6532
commit 780e1eba21
46 changed files with 4074 additions and 3143 deletions
+29 -26
View File
@@ -143,9 +143,18 @@ trait ServicePart1a {
return ['success' => false, 'error' => __('注册成功,但读取用户信息失败,请联系管理员', 'aksrt')];
}
self::mark_email_verified($user_id);
wp_set_auth_cookie((int) $user_id, true);
do_action('wp_login', $user->user_login, $user);
if (
empty($post['_defer_login'])
&& !empty($post['_auth_code_verified'])
&& class_exists('\AKSRT\Settings\Settings')
&& \AKSRT\Settings\Settings::signup_verification_enabled()
) {
self::mark_email_verified($user_id);
}
if (empty($post['_defer_login'])) {
wp_set_auth_cookie((int) $user_id, true);
do_action('wp_login', $user->user_login, $user);
}
return [
'success' => true,
'user_id' => (int) $user_id,
@@ -156,35 +165,29 @@ trait ServicePart1a {
];
}
public static function finalize_oauth_binding(int $user_id, array $oauth_data, string $obk = ''): void {
if ($user_id <= 0) {
return;
public static function finalize_oauth_binding(int $user_id, array $oauth_data, string $obk = '') {
if ($user_id <= 0 || $obk === '') {
return new \WP_Error('oauth_binding_invalid', __('绑定会话无效', 'aksrt'));
}
$provider = sanitize_key((string) ($oauth_data['provider'] ?? ''));
if ($provider === '') {
return;
$payload = $oauth_data;
if (empty($payload['_oauth_claimed'])) {
$row = OAuthTransactionStore::claim(sanitize_text_field($obk), 'obk');
$payload = is_array($row['payload'] ?? null) ? $row['payload'] : [];
if (!$row || $payload === []) {
return new \WP_Error('oauth_binding_consumed', __('绑定会话已过期或已使用,请重新授权', 'aksrt'));
}
}
update_user_meta($user_id, "aksrt_{$provider}_id", $oauth_data['provider_id'] ?? '');
$bindings = get_user_meta($user_id, 'aksrt_oauth_bindings', true);
$bindings = is_array($bindings) ? $bindings : [];
if (!in_array($provider, $bindings, true)) {
$bindings[] = $provider;
unset($payload['_oauth_claimed']);
$provider = sanitize_key((string) ($payload['provider'] ?? ''));
$identity = is_array($payload['user_data'] ?? null) ? $payload['user_data'] : [];
if ($provider === '' || empty($identity['provider_id'])) {
return new \WP_Error('oauth_binding_invalid', __('第三方账号信息无效', 'aksrt'));
}
update_user_meta($user_id, 'aksrt_oauth_bindings', array_values($bindings));
if (!empty($oauth_data['user_data']['avatar_url'])) {
update_user_meta($user_id, 'aksrt_oauth_avatar', esc_url_raw($oauth_data['user_data']['avatar_url']));
}
if ($obk !== '') {
delete_transient(sanitize_text_field($obk));
}
wp_set_auth_cookie($user_id, true);
return OAuthAccountService::bind($user_id, $provider, $identity);
}
private static function mark_email_verified(int $user_id): void {
update_user_meta($user_id, self::EMAIL_VERIFIED_META, '1');
do_action('aksrt_email_verified', $user_id);