PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.3
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.3
16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / jetpack_vendor / automattic / jetpack-connection / src / class-user-account-status.php
jetpack / jetpack_vendor / automattic / jetpack-connection / src Last commit date
abilities 2 months ago connectors 1 month ago health 1 month ago identity-crisis 1 month ago sso 1 month ago traits 9 months ago webhooks 9 months ago class-authorize-json-api.php 1 month ago class-client.php 8 months ago class-connection-assets.php 1 year ago class-connection-notice.php 8 months ago class-error-handler.php 3 weeks ago class-external-storage.php 4 months ago class-heartbeat.php 1 month ago class-initial-state.php 4 weeks ago class-manager.php 3 weeks ago class-nonce-handler.php 9 months ago class-package-version-tracker.php 1 month ago class-package-version.php 3 weeks ago class-partner-coupon.php 2 months ago class-partner.php 2 years ago class-plugin-storage.php 8 months ago class-plugin.php 9 months ago class-rest-authentication.php 9 months ago class-rest-connector.php 4 weeks ago class-secrets.php 9 months ago class-server-sandbox.php 2 months ago class-site-health.php 2 months ago class-terms-of-service.php 2 years ago class-tokens-locks.php 9 months ago class-tokens.php 9 months ago class-tracking.php 2 months ago class-urls.php 6 months ago class-user-account-status.php 9 months ago class-users-connection-admin.php 2 months ago class-utils.php 2 years ago class-webhooks.php 1 month ago class-xmlrpc-async-call.php 2 years ago class-xmlrpc-connector.php 9 months ago interface-manager.php 4 years ago interface-storage-provider.php 6 months ago
class-user-account-status.php
117 lines
1 <?php
2 /**
3 * Class to check for account errors in the Jetpack Connection.
4 *
5 * @package automattic/jetpack-connection
6 * @since 6.11.0
7 */
8
9 namespace Automattic\Jetpack\Connection;
10
11 /**
12 * Class User_Account_Status
13 */
14 class User_Account_Status {
15 /**
16 * Check for possible account errors between the local user and WPCOM account.
17 *
18 * @since 6.11.0
19 *
20 * @param string $current_user_email The email of the current WordPress user.
21 * @param string $wpcom_user_email The email of the connected WordPress.com account.
22 *
23 * @return array An array of possible account errors, empty if no errors.
24 */
25 public function check_account_errors( $current_user_email, $wpcom_user_email ) {
26 $errors = array();
27
28 // Check for email mismatch error.
29 $has_mismatch = $this->possible_account_mismatch( $current_user_email, $wpcom_user_email );
30 if ( $has_mismatch ) {
31 $errors['mismatch'] = array(
32 'type' => 'mismatch',
33 'message' => __( 'Your WordPress.com email is also used by another user account. This won’t affect functionality but may cause confusion about which user account is connected.', 'jetpack-connection' ),
34 'details' => array(
35 'site_email' => $current_user_email,
36 'wpcom_email' => $wpcom_user_email,
37 ),
38 );
39 }
40
41 /**
42 * Filters the account errors.
43 *
44 * @since 6.11.0
45 *
46 * @param array $errors The array of account errors.
47 * @param string $current_user_email The email of the current WordPress user.
48 * @param string $wpcom_user_email The email of the connected WordPress.com account.
49 */
50 return apply_filters( 'jetpack_connection_account_errors', $errors, $current_user_email, $wpcom_user_email );
51 }
52
53 /**
54 * Check if there is a possible account mismatch between the local user and WPCOM account.
55 *
56 * @since 6.11.0
57 *
58 * @param string $current_user_email The email of the current WordPress user.
59 * @param string $wpcom_user_email The email of the connected WordPress.com account.
60 *
61 * @return bool Whether there is a possible account mismatch.
62 */
63 public function possible_account_mismatch( $current_user_email, $wpcom_user_email ) {
64 // If emails are the same or there's no WPCOM email, there's no mismatch.
65 if ( $current_user_email === $wpcom_user_email || ! $wpcom_user_email ) {
66 return false;
67 }
68
69 // Generate transient key with both wpcom email and user ID if available.
70 $transient_key = 'jetpack_account_mismatch_';
71 $transient_key .= md5( $wpcom_user_email );
72
73 $cached_result = get_transient( $transient_key );
74
75 if ( false !== $cached_result ) {
76 return (bool) $cached_result;
77 }
78
79 // Check if there's a WordPress user with the WPCOM email .
80 $wpcom_email_user = get_user_by( 'email', $wpcom_user_email );
81 $mismatch_exists = false !== $wpcom_email_user;
82
83 // Store the result in a transient for 24 hours.
84 set_transient( $transient_key, $mismatch_exists, DAY_IN_SECONDS );
85
86 return $mismatch_exists;
87 }
88
89 /**
90 * Clears account mismatch transients for a user when they update their email or are deleted.
91 *
92 * @since 6.11.0
93 *
94 * @param string|int $user_id_or_email User ID or email address.
95 * @return void
96 */
97 public function clean_account_mismatch_transients( $user_id_or_email ) {
98 $email = null;
99
100 if ( is_numeric( $user_id_or_email ) ) {
101 $user = get_userdata( $user_id_or_email );
102 if ( $user && isset( $user->user_email ) ) {
103 $email = $user->user_email;
104 }
105 } else {
106 $email = $user_id_or_email;
107 }
108
109 if ( ! $email || ! is_email( $email ) ) {
110 return;
111 }
112
113 $transient_key = 'jetpack_account_mismatch_' . md5( $email );
114 delete_transient( $transient_key );
115 }
116 }
117