优化了一些问题
This commit is contained in:
+29
-26
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user