Esempio n. 1
0
 private function ensure_mapping_is_correct($mapping_from_member_exists, $mapping_from_user_exists, $wp_user, $member, $wp_user_existed_before_request, array $context)
 {
     if ($mapping_from_member_exists) {
         $method = 'update_mapping_by_member';
     } elseif ($mapping_from_user_exists) {
         $method = 'update_mapping_by_user';
     } else {
         $method = 'create_mapping';
     }
     $outcome_of_mapping = $this->repository()->{$method}($wp_user, $member, $context);
     if (is_wp_error($outcome_of_mapping)) {
         if ($outcome_of_mapping->get_error_code() === "duplicate_user_for_member" && !$wp_user_existed_before_request) {
             // We only record this error as others will be passed up and recorded
             // by something else, whereas here we're working around the error.
             memberful_wp_record_wp_error($outcome_of_mapping);
             wp_delete_user($wp_user->ID);
             $error_data = $outcome_of_mapping->get_error_data();
             return $error_data['canonical_user'];
         } else {
             return $outcome_of_mapping;
         }
     }
     return $wp_user;
 }
Esempio n. 2
0
 /**
  * Gets the access token and refresh token from an authorization code
  *
  * @param string $auth_code The authorization code returned from OAuth endpoint
  * @return StdObject Access token and Refresh token
  */
 public function get_oauth_tokens($auth_code)
 {
     $params = array('client_id' => get_option('memberful_client_id'), 'client_secret' => get_option('memberful_client_secret'), 'grant_type' => 'authorization_code', 'code' => $auth_code);
     $response = memberful_wp_post_data_to_api_as_json(self::oauth_member_url('token'), $params);
     if (is_wp_error($response)) {
         memberful_wp_record_wp_error($response);
         return $this->_error('could_not_get_tokens', $response);
     }
     $body = json_decode($response['body']);
     $code = $response['response']['code'];
     if ($code != 200 || $body === NULL || empty($body->access_token)) {
         $payload = array('code' => 'oauth_access_fail', 'error' => 'Could not get access token from Memberful', 'response' => $response);
         memberful_wp_record_error($payload);
         return $this->_error($payload['code'], $payload['error']);
     }
     return json_decode($response['body']);
 }