Plugin Directory

Changeset 3261174


Ignore:
Timestamp:
03/25/2025 03:11:08 AM (12 months ago)
Author:
fizzbuzzdev
Message:

Updated to new version, removed older versions - added stability fixes and better expired license handling. adding login monitor log

Location:
qe-fid-id
Files:
67 added
8 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • qe-fid-id/trunk/autoload.php

    r2848772 r3261174  
    33namespace QeFid\ID;
    44
    5 define('QE_FID_VERSION', '1.1.0');
     5define('QE_FID_VERSION', '1.2.9');
    66
    77/**
  • qe-fid-id/trunk/includes/Constants/Options.php

    r3042256 r3261174  
    5959  static string $API_KEY_ACCESS = "qe_fid_access_key";
    6060  static string $API_KEY_REFRESH = "qe_fid_refresh_key";
     61  static string $API_LICENCE_KEY_ACCESS_REFRESH_PAIR = "qe_fid_access_refresh_key_pair";
     62  static string $LICENCE_EXPIRATION_TIME = "qe_fid_license_expiration_time";
    6163
    6264
  • qe-fid-id/trunk/includes/Endpoint/Admin.php

    r3140374 r3261174  
    1616use QeFid\ID;
    1717use QeFid\ID\Constants\Options;
     18use QeFid\ID\Models\Tokens;
    1819use QeFid\ID\Plugin;
    1920use QeFid\ID\PluginMeta;
     
    351352    $endpoint_option = get_option(Options::$LICENSING_API_ENDPOINT);
    352353    $license_key = get_option(Options::$FID_LICENSE_KEY);
    353     $access = get_option(Options::$API_KEY_ACCESS);
    354     $refresh = get_option(Options::$API_KEY_REFRESH);
     354    $tokens = Tokens::get_instance();
    355355    $contact_email_option = get_option(Options::$FID_ADMIN_EMAIL);
     356    $expiration_time = get_option(Options::$LICENCE_EXPIRATION_TIME);
    356357
    357358    return new \WP_REST_Response(array(
    358359      'success' => true,
    359       'email' => !$contact_email_option ? '' : $contact_email_option,
    360       'endpoint_url' => !$endpoint_option ? '' : $endpoint_option,
    361       'license_key' => !$license_key ? '' : $license_key,
    362       'access_key' => !$access ? '' : '********',
    363       'refresh_key' => !$refresh ? '' : '********'
     360      'email' => $contact_email_option ?: '',
     361      'endpoint_url' => $endpoint_option ?: '',
     362      'license_key' => $license_key ?: '',
     363      'access_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
     364      'refresh_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
     365      'expiration' => $expiration_time ?: '',
    364366    ), 200);
    365367  }
     
    376378    $endpoint_option = update_option(Options::$LICENSING_API_ENDPOINT, $request->get_param('endpoint_url'));
    377379    $license_key = update_option(Options::$FID_LICENSE_KEY, $request->get_param('license_key'));
     380    $expiration_time = get_option(Options::$LICENCE_EXPIRATION_TIME);
    378381
    379382    $ok = $updated || $endpoint_option || $license_key;
     
    383386      'endpoint_url' => $request->get_param('endpoint_url'),
    384387      'license_key' => $request->get_param('license_key'),
     388      'expiration' => $expiration_time ?: '',
    385389    ), 200);
    386390  }
     
    395399  {
    396400    $deleted = false;
    397     $access_key = get_option(Options::$API_KEY_ACCESS);
    398     $refresh_key = get_option(Options::$API_KEY_REFRESH);
    399     if (!$access_key && !$refresh_key) {
     401    $tokens = Tokens::get_instance();
     402    if (!$tokens || !$tokens->tokensValid()) {
    400403      $lk = delete_option(Options::$FID_LICENSE_KEY);
    401404      $endpoint_option = delete_option(Options::$LICENSING_API_ENDPOINT);
     405      $deleted = delete_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR);
    402406      $deleted = delete_option(Options::$FID_API_ENDPOINT);
    403407      $deleted = delete_option(Options::$FID_ADMIN_EMAIL);
     
    423427    if ($activated['success'] === true) {
    424428      ID\Login::get_instance()->activate_login_form();
    425       $access = get_option(Options::$API_KEY_ACCESS);
    426       $refresh = get_option(Options::$API_KEY_REFRESH);
     429      $tokens = Tokens::get_instance();
    427430      return new \WP_REST_Response(array(
    428431        'success'   => true,
    429432        'license_key'     => $request->get_param('license_key'),
    430         'access_key' => !$access ? '' : '********',
    431         'refresh_key' => !$refresh ? '' : '********',
     433        'access_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
     434        'refresh_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
    432435        'error' => '',
    433436      ), 200);
     
    441444      );
    442445    }
    443     $access = get_option(Options::$API_KEY_ACCESS);
    444     $refresh = get_option(Options::$API_KEY_REFRESH);
     446    $tokens = Tokens::get_instance();
    445447    return new \WP_REST_Response(array(
    446448      'success'   => false,
    447449      'license_key'     => $request->get_param('license_key'),
    448       'access_key' => !$access ? '' : '********',
    449       'refresh_key' => !$refresh ? '' : '********',
     450      'access_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
     451      'refresh_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
    450452      'error' => $activated['error'],
    451453    ), 200);
     
    460462  public function deactivate_fid_license($request)
    461463  {
    462     $refresh_key = get_option(Options::$API_KEY_REFRESH);
     464    $refresh_key = Tokens::get_instance()->get_refresh_token();
    463465    $deactivated = ID\Endpoint\PluginAdmin::deactivate_license($refresh_key);
    464466    if ($deactivated['success'] === true) {
    465       $deleted_access = delete_option(Options::$API_KEY_ACCESS);
    466       $deleted_refresh = delete_option(Options::$API_KEY_REFRESH);
     467      $deleted_keys = delete_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR);
    467468      $deleted_endpoint = delete_option(Options::$FID_API_ENDPOINT);
    468469      $deleted_endpoint = delete_option(Options::$FID_LICENSE_USER_LIMIT);
    469470
    470       $ok = $deleted_access && $deleted_refresh && $deleted_endpoint;
     471      $ok = $deleted_keys && $deleted_endpoint;
    471472
    472473      return new \WP_REST_Response(array(
     
    479480    }
    480481
     482    $tokens = Tokens::get_instance();
    481483    return new \WP_REST_Response(array(
    482484      'success'   => false,
    483485      'license_key'     =>  get_option(Options::$FID_LICENSE_KEY),
    484       'access_key' => !get_option(Options::$API_KEY_ACCESS) ? '' : '********',
    485       'refresh_key' => !get_option(Options::$API_KEY_REFRESH) ? '' : '********',
     486      'access_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
     487      'refresh_key' => !$tokens || !$tokens->tokensValid() ? '' : '********',
    486488      'error' => $deactivated['error'],
    487489    ), 200);
     
    639641    }
    640642    $renewed = ID\Endpoint\PluginAdmin::renew_license();
     643    $tokens = Tokens::get_instance();
    641644    return new \WP_REST_Response(array(
    642645      'success'   => true,
    643       'license_key'     => get_option(Options::$FID_LICENSE_KEY),
    644       'access_key' => get_option(Options::$API_KEY_ACCESS),
    645       'refresh_key' => get_option(Options::$API_KEY_REFRESH),
     646      'license_key' => get_option(Options::$FID_LICENSE_KEY),
     647      'access_key' => !$tokens || !$tokens->tokensValid() ? false : '********',
     648      'refresh_key' => !$tokens || !$tokens->tokensValid() ? false : '********',
    646649      'error' => $renewed['error'],
    647650    ), 200);
  • qe-fid-id/trunk/includes/Endpoint/PluginAdmin.php

    r3140374 r3261174  
    1616use QeFid\ID;
    1717use QeFid\ID\Constants\Options;
     18use QeFid\ID\Models\Tokens;
     19use QeFid\ID\Modules\LoginMonitor;
     20use QeFid\ID\Plugin;
    1821
    1922/**
     
    2326class PluginAdmin
    2427{
     28  const ONE_DAY = 8640;
     29  const TWO_AND_HALF_DAYS = 216000;
     30
    2531  protected static function get_owner_site_url(): string
    2632  {
    2733    return get_site_url();
     34  }
     35
     36  public static function get_instance()
     37  {
     38    return new self();
     39  }
     40
     41  public static function get_plugin_slug()
     42  {
     43    return "qe-fid-id-plugin";
     44  }
     45
     46  public static function get_cron_hook()
     47  {
     48    return static::get_plugin_slug() . '_license_renew_hook';
    2849  }
    2950
     
    5172  {
    5273    return PluginAdmin::get_licensing_url() . "/" . "renew-license";
     74  }
     75
     76  /**
     77   * Decode a jwt token and read the expiration date claim called 'exp' which is a unix timestamp
     78   * The date is compared with the current unix timestamp
     79   * if the unix timestamp is within 15 minutes or less or is greater than the exp date
     80   * It should call the renew licence method below
     81   */
     82  public static function check_token_expiry($skip = false)
     83  {
     84    $tokens = Tokens::get_instance();
     85    if ($tokens == false || !$tokens->tokensValid()) {
     86      static::remove_token_expiry_check();
     87      return;
     88    }
     89
     90    $token = explode(".", $tokens->get_access_token());
     91    $token = json_decode(base64_decode($token[1]), true);
     92    $exp = isset($token["exp"]) ? $token['exp'] : 0; //will automatically fail all checks if license is tampered with
     93    $duration = isset($token['duration']) ? $token['duration'] : 'NA';
     94    $current = time();
     95    if ($exp - $current <= 0) {
     96      $result =  static::renew_license();
     97      if (isset($result['error']) && $result['success'] === false) {
     98        (new LoginMonitor)->log_login_attempt("Renewing License", 0);
     99        delete_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR);
     100        delete_option(Options::$LICENCE_EXPIRATION_TIME);
     101        Plugin::deactivate();
     102      }
     103      return;
     104    }
     105
     106    // If a license is not renewed via payment, the license on the server is automatically invalidated
     107    // This is an attempt to keep the service from deactivating or locking if an invalidated license is not renewed in time
     108    if (!$skip && ($exp - $current <= self::TWO_AND_HALF_DAYS)) {
     109      $result = static::renew_license();
     110      if (isset($result['success']) && $result['success'] === true) {
     111        (new LoginMonitor)->log_custom_message("Renewed License", "$duration");
     112
     113        return static::check_token_expiry(true);
     114      }
     115    }
     116
     117    add_option(Options::$LICENCE_EXPIRATION_TIME, ($exp - $current));
     118  }
     119
     120  /**
     121   * Add a hook that fires when the plugins load to check the token expiry
     122   */
     123  public function add_token_expiry_check()
     124  {
     125    // add_action(static::get_cron_hook(), [$this, 'check_token_expiry']);
     126
     127    if (! wp_next_scheduled(static::get_cron_hook())) {
     128      wp_schedule_event(time(), 'daily', static::get_cron_hook());
     129    }
     130    // add_action('plugins_loaded', [$this, 'check_token_expiry']);
     131  }
     132
     133  /**
     134   * remove the hook that checks the token expiry
     135   */
     136  public function remove_token_expiry_check()
     137  {
     138    $timestamp = wp_next_scheduled(static::get_cron_hook());
     139    if ($timestamp == false) {
     140      return;
     141    }
     142    wp_unschedule_event($timestamp, static::get_cron_hook());
    53143  }
    54144
     
    88178
    89179    $return['success'] = PluginAdmin::save_auth_tokens($response);
     180    static::get_instance()->add_token_expiry_check();
    90181    $plugin->activate();
    91182    return $return;
     
    104195    );
    105196
    106     $token = get_option(Options::$API_KEY_REFRESH);
    107     if ($token == false) {
     197    $tokens = Tokens::get_instance();
     198    $token = $tokens->get_refresh_token();
     199    if (!$tokens || !$tokens->tokensValid() || !$token) {
    108200      $return['error'] = "No Active License";
    109201      $return['success'] = false;
     
    159251      return $return;
    160252    }
    161 
    162 
     253    static::get_instance()->remove_token_expiry_check();
    163254
    164255    return $return;
     
    196287    if (
    197288      !isset($tknArray["tokens"]) ||
    198       $tknArray["tokens"]["access_token"] == "" ||
    199       $tknArray["tokens"]["refresh_token"] == ""
     289      empty($tknArray["tokens"]["access_token"]) ||
     290      empty($tknArray["tokens"]["refresh_token"])
    200291    ) {
    201292      return false;
    202293    }
    203     update_option(Options::$API_KEY_ACCESS, $tknArray["tokens"]["access_token"]);
    204     update_option(Options::$API_KEY_REFRESH, $tknArray["tokens"]["refresh_token"]);
     294
     295    Tokens::setTokens($tknArray["tokens"]["access_token"], $tknArray["tokens"]["refresh_token"]);
    205296
    206297    //extract base 64 encoded data from the token
     
    214305  }
    215306}
     307add_action(PluginAdmin::get_cron_hook(), ['QeFid\\ID\\Endpoint\\PluginAdmin', 'check_token_expiry']);
     308if (! wp_next_scheduled(PluginAdmin::get_cron_hook())) {
     309  wp_schedule_event(time(), 'daily', PluginAdmin::get_cron_hook());
     310}
  • qe-fid-id/trunk/includes/Login.php

    r3000397 r3261174  
    1616use QeFid\ID\Constants\Options;
    1717use QeFid\ID\Models\RestConfig;
     18use QeFid\ID\Models\Tokens;
    1819
    1920/**
     
    9495    $enrolled = get_option(Options::$FID_USER_MAPPING_ROSTER);
    9596    $active_license = get_option(Options::$FID_LICENSE_KEY);
    96     $activated_service = get_option(Options::$API_KEY_ACCESS);
    97     $activated_service_key = get_option(Options::$API_KEY_REFRESH);
     97    $activated_service_keys = Tokens::get_instance();
    9898    $api_valid  = get_option(Options::$FID_API_ENDPOINT);
    9999    $activated_guard = get_option(Options::$FID_PLUGIN_LOGIN_GUARD_STATE);
    100     $valid_plugin_config = $active_license && $activated_service && $activated_service_key && $api_valid;
     100    $valid_plugin_config = $active_license && $activated_service_keys && $activated_service_keys->tokensValid() && $api_valid;
    101101    if (
    102102      !$enrolled ||
     
    127127    $enrolled = get_option(Options::$FID_USER_MAPPING_ROSTER);
    128128    $active_license = get_option(Options::$FID_LICENSE_KEY);
    129     $activated_service = get_option(Options::$API_KEY_ACCESS);
    130     $activated_service_key = get_option(Options::$API_KEY_REFRESH);
     129    $activated_service_keys = Tokens::get_instance();
    131130    $api_valid  = get_option(Options::$FID_API_ENDPOINT);
    132     $valid_plugin_config = $active_license && $activated_service && $activated_service_key && $api_valid;
     131    $valid_plugin_config = $active_license && $activated_service_keys && $activated_service_keys->tokensValid() && $api_valid;
    133132    if (
    134133      !$enrolled ||
     
    151150  }
    152151
    153   public function deactivate_login_form()
    154   {
    155   }
     152  public function deactivate_login_form() {}
    156153
    157154  // add_filter('wp_authenticate_user','wdm_validate_login_captcha',10,2);
  • qe-fid-id/trunk/includes/Plugin.php

    r3140374 r3261174  
    1515
    1616use QeFid\ID\Constants\Options;
     17use QeFid\ID\Endpoint\PluginAdmin;
    1718use QeFid\ID\EventPipes\DeletePipe;
    1819use QeFid\ID\EventPipes\LoginPipe;
     
    2526use QeFid\ID\Models\EnrollRequest;
    2627use QeFid\ID\Models\EnrollResponse;
     28use QeFid\ID\Models\Tokens;
    2729use QeFid\ID\Models\UpdateRequest;
    2830use QeFid\ID\Models\VerifyRequest;
    2931use QeFid\ID\Models\VerifyResponse;
     32use QeFid\ID\Modules\LoginMonitor;
    3033use QeFid\ID\Users\FidUser;
    3134use QeFid\ID\Users\UserRoster;
     
    189192    }
    190193
     194
    191195    self::get_instance()->set_plugin_nonce(get_option(Options::$FID_PLUGIN_NONCE));
    192 
    193196    $roster = self::get_user_roster();
    194197    if (
     
    206209    // Ensure the user has an activated license to be able to make api calls before locking the user credentials
    207210    $active_license = get_option(Options::$FID_LICENSE_KEY);
    208     $access_token = get_option(Options::$API_KEY_ACCESS);
    209     $refresh_token = get_option(Options::$API_KEY_REFRESH);
    210     if (!$active_license || !$access_token || !$refresh_token) {
     211    $token_pair = Tokens::get_instance();
     212    if (!$active_license || !$token_pair || !$token_pair->tokensValid()) {
    211213      return;
    212214    }
     
    269271    $roster = self::get_user_roster();
    270272
     273    $checks = PluginAdmin::get_instance()->remove_token_expiry_check();
    271274    if (UserRoster::$ROSTER_STATUS_INACTIVE === $roster->roster_status) {
    272275      return;
     
    323326    }
    324327
     328    if (count(self::$modules) == 0) {
     329      try {
     330        $module = LoginMonitor::get_instance();
     331        self::$modules = [$module];
     332      } catch (\Exception $e) {
     333        print_r(json_encode($e));
     334      }
     335    }
     336
     337    PluginAdmin::get_instance()->add_token_expiry_check();
     338
    325339    return self::$instance;
    326340  }
     341
     342  static $modules = [];
    327343
    328344  /**
     
    579595          }
    580596
    581           if (!get_option(Options::$API_KEY_ACCESS)) {
     597          if (!get_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR)) {
    582598            return new PipeEventReturn("", array(
    583599              "error" => "Invalid API key, please ensure you have activated the license from the FiD Auth settings page",
     
    697713            return new PipeEventReturn("", "Invalid endpoint file object or pin");
    698714          }
    699           if (!get_option(Options::$API_KEY_ACCESS)) {
     715          if (!get_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR)) {
    700716            return new PipeEventReturn("", array(
    701717              "error" => "Unauthorized access",
     
    717733          if (isset($parsed_response["error"]) && $parsed_response["error"] != "") {
    718734            Plugin::process_api_errors($parsed_response["error"]);
     735            LoginMonitor::get_instance()->log_login_attempt("FiD Access");
    719736            return new PipeEventReturn("", $parsed_response);
    720737          }
     
    788805            return new PipeEventReturn("", "Incorrect Login Credentials, please try again");
    789806          }
    790           do_action('wp_login', $user->user_login, $user);
     807          // do_action('wp_login', $user->user_login, $user);
    791808          return new PipeEventReturn("Login Successful");
    792809        }
     
    820837          if (!$fid_user || $fid_user->user_id < 0) return new PipeEventReturn("", "Plugin user not found");
    821838
    822           if (!get_option(Options::$API_KEY_ACCESS)) {
     839          if (!get_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR)) {
    823840            return new PipeEventReturn("", array(
    824841              "error" => "Invalid API key, please ensure you have activated the license from the FiD Auth settings page",
     
    918935          if (!$fid_user || $fid_user->user_id < 0) return new PipeEventReturn("", "Plugin user not found");
    919936
    920           if (!get_option(Options::$API_KEY_ACCESS)) {
     937          if (!get_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR)) {
    921938            return new PipeEventReturn("", array(
    922939              "error" => "Invalid API key, please ensure you have activated the license from the FiD Auth settings page",
  • qe-fid-id/trunk/includes/Utils/Networking.php

    r2848772 r3261174  
    11<?php
     2
    23/**
    34 * FiD Facial Recognition Admin Login
     
    1314namespace QeFid\ID\Utils;
    1415
    15 use QeFid\ID\Constants\Options;
     16use QeFid\ID\Models\Tokens;
    1617
    17 class Networking{
    18   public static function post_to_url_with_image($url, $file_path, $form_data){
    19     $api_access_key = get_option(Options::$API_KEY_ACCESS);
    20     $boundary = wp_generate_password( 24, false );
     18class Networking
     19{
     20  public static function post_to_url_with_image($url, $file_path, $form_data)
     21  {
     22    $api_access_key = Tokens::get_instance()->get_access_token();
     23    $boundary = wp_generate_password(24, false);
    2124    $headers  = array(
    2225      'X-Api-Key' => $api_access_key,
     
    2528
    2629    $payload = '';
    27     foreach ( $form_data as $name => $value ) {
     30    foreach ($form_data as $name => $value) {
    2831      $payload .= '--' . $boundary;
    2932      $payload .= "\r\n";
     
    3538
    3639    // Upload the file
    37     if ( $file_path ) {
     40    if ($file_path) {
    3841      $payload .= '--' . $boundary;
    3942      $payload .= "\r\n";
    4043      $payload .= 'Content-Disposition: form-data; name="' . 'file' .
    41         '"; filename="' . basename( $file_path ) . '"' . "\r\n";
     44        '"; filename="' . basename($file_path) . '"' . "\r\n";
    4245      //        $payload .= 'Content-Type: image/jpeg' . "\r\n";
    4346      $payload .= "\r\n";
    44       $payload .= file_get_contents( $file_path );
     47      $payload .= file_get_contents($file_path);
    4548      $payload .= "\r\n";
    4649    }
    4750
    4851    $payload .= '--' . $boundary . '--';
    49     $response = wp_remote_post( $url,
     52    $response = wp_remote_post(
     53      $url,
    5054      array(
    5155        'headers'    => $headers,
     
    5761  }
    5862
    59   public static function post_to_url($url, $body){
    60     $response = self::post_to_url_with_image($url,null,$body);
     63  public static function post_to_url($url, $body)
     64  {
     65    $response = self::post_to_url_with_image($url, null, $body);
    6166    return $response;
    6267  }
    63 
    6468}
    65 ?>
  • qe-fid-id/trunk/qe-fid-plugin.php

    r3249351 r3261174  
    1515 * Plugin URI:        https://www.fidaccess.com
    1616 * Description:       Secure your wp-admin with Facial recognition technology powered by FiD Access
    17  * Version:           1.2.7
     17 * Version:           1.2.9
    1818 * Author:            FiD Access
    1919 * Text Domain:       qe-fid-v1
     
    6565
    6666add_action('wp_enqueue_scripts', 'QeFid\\ID\\collectiveray_load_js_script');
     67
     68$file   = basename(__FILE__);
     69$folder = basename(dirname(__FILE__));
     70$hook = "in_plugin_update_message-{$folder}/{$file}";
     71
     72function update_message_critical_updates_and_new_features($data, $response)
     73{
     74  if (is_admin() && isset($data['upgrade_notice'])) {
     75    printf(
     76      '<div class="update-message">%s</div>',
     77      wpautop($data['upgrade_notice'])
     78    );
     79  }
     80}
     81add_action($hook, 'QeFid\\ID\\update_message_critical_updates_and_new_features', 10, 2);
  • qe-fid-id/trunk/readme.txt

    r3249351 r3261174  
    55Tested up to: 6.7.2
    66Requires PHP: 5.6
    7 Stable tag: 1.2.7
     7Stable tag: 1.2.9
    88License: GPL-3.0 or later
    99License URI: https://www.gnu.org/licenses/gpl.html
     
    190190
    191191== Changelog ==
     192= 1.2.9 =
     193 - Stability fixes and top 500 login attempts shown on dashboard
     194= 1.2.8 =
     195 - Added login log to show top 10 logins to dashboard
    192196= 1.2.7 =
    193197 - More Fixes for mobile capturing and wide lense cameras
  • qe-fid-id/trunk/uninstall.php

    r3184140 r3261174  
    66use QeFid\ID\Constants\Options;
    77use QeFid\ID\Endpoint\PluginAdmin;
     8use QeFid\ID\Models\Tokens;
    89
    910// If uninstall not called from WordPress exit
     
    1617$access_key = get_option(\QeFid\ID\Constants\Options::$API_KEY_ACCESS);
    1718$refresh_key = get_option(Options::$API_KEY_REFRESH);
    18 if ($refresh_key) {
     19$refresh_pair = Tokens::get_instance();
     20if ($refresh_key || $refresh_pair) {
    1921  try {
     22    $refresh_key = ($refresh_pair !== false && gettype($refresh_pair) == 'object') ? $refresh_pair->get_refresh_token() : $refresh_key;
    2023    $deactivated = PluginAdmin::deactivate_license($refresh_key);
    2124  } catch (Exception $e) {
     
    2629  $deleted_endpoint = delete_option(Options::$FID_API_ENDPOINT);
    2730  $deleted_endpoint = delete_option(Options::$FID_LICENSE_USER_LIMIT);
     31  $deleted_endpoint_key_pair = delete_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR);
    2832}
    2933delete_option(Options::$FID_LICENSE_KEY);
     
    3236delete_option(Options::$FID_ADMIN_EMAIL);
    3337delete_option(Options::$FID_PLUGIN_LOGIN_GUARD_STATE);
     38$deleted_endpoint_key_pair = delete_option(Options::$API_LICENCE_KEY_ACCESS_REFRESH_PAIR);
    3439// Ensure that the user unenrolled from the service before deleting data
    3540// protects against accidental deletion
Note: See TracChangeset for help on using the changeset viewer.