Plugin Directory

Changeset 3454892


Ignore:
Timestamp:
02/05/2026 07:14:15 PM (7 weeks ago)
Author:
daggerhart
Message:

Update to version 3.10.3 from GitHub

Location:
daggerhart-openid-connect-generic
Files:
16 edited
1 copied

Legend:

Unmodified
Added
Removed
  • daggerhart-openid-connect-generic/tags/3.10.3/docker-compose.yml

    r3067237 r3454892  
    66services:
    77  app:
    8     image: ghcr.io/ndigitals/wp-dev-container:php-8.0-node-16
     8    image: ghcr.io/ndigitals/wp-dev-container:php-8.1-node-20
    99    restart: always
    1010    depends_on:
  • daggerhart-openid-connect-generic/tags/3.10.3/includes/openid-connect-generic-client-wrapper.php

    r3422318 r3454892  
    9999        // Alter the requests according to settings.
    100100        add_filter( 'openid-connect-generic-alter-request', array( $client_wrapper, 'alter_request' ), 10, 2 );
     101
     102        // Ensure tokens are refreshed before they expire.
     103        if ( $settings->token_refresh_enable ) {
     104            add_action( 'init', array( $client_wrapper, 'ensure_tokens_still_fresh' ) );
     105        }
    101106
    102107        if ( is_admin() ) {
     
    253258
    254259        $user_id = wp_get_current_user()->ID;
    255         $last_token_response = get_user_meta( $user_id, 'openid-connect-generic-last-token-response', true );
     260        $last_token_response = get_user_option( 'openid-connect-generic-last-token-response', $user_id );
     261
     262        if ( false === $last_token_response ) {
     263            $last_token_response = get_user_meta(
     264                $user_id,
     265                'openid-connect-generic-last-token-response',
     266                true
     267            );
     268        }
    256269
    257270        if ( ! empty( $last_token_response['expires_in'] ) && ! empty( $last_token_response['time'] ) ) {
     
    299312        $token_response[] = time();
    300313
    301         update_user_meta( $user_id, 'openid-connect-generic-last-token-response', $token_response );
     314        update_user_option( $user_id, 'openid-connect-generic-last-token-response', $token_response );
    302315        $this->save_refresh_token( $manager, $token, $token_response );
    303316    }
     
    369382        }
    370383
    371         $token_response = $user->get( 'openid-connect-generic-last-token-response' );
     384        $token_response = get_user_option( 'openid-connect-generic-last-token-response', $user->ID );
    372385        if ( ! $token_response ) {
    373386            // Happens if non-openid login was used.
     
    378391        }
    379392
    380         $claim = $user->get( 'openid-connect-generic-last-id-token-claim' );
     393        $claim = get_user_option( 'openid-connect-generic-last-id-token-claim', $user->ID );
    381394
    382395        if ( isset( $claim['iss'] ) && 'https://accounts.google.com' == $claim['iss'] ) {
     
    641654
    642655        // Store the tokens for future reference.
    643         update_user_meta( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
    644         update_user_meta( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
    645         update_user_meta( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
     656        update_user_option( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
     657        update_user_option( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
     658        update_user_option( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
    646659
    647660        return $user_claim;
     
    661674    public function login_user( $user, $token_response, $id_token_claim, $user_claim, $subject_identity ): void {
    662675        // Store the tokens for future reference.
    663         update_user_meta( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
    664         update_user_meta( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
    665         update_user_meta( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
     676        update_user_option( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
     677        update_user_option( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
     678        update_user_option( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
    666679        // Allow plugins / themes to take action using current claims on existing user (e.g. update role).
    667680        do_action( 'openid-connect-generic-update-user-using-current-claim', $user, $user_claim );
     
    10991112
    11001113        // Save some meta data about this new user for the future.
    1101         add_user_meta( $user->ID, 'openid-connect-generic-subject-identity', (string) $subject_identity, true );
     1114        update_user_option( $user->ID, 'openid-connect-generic-subject-identity', (string) $subject_identity, true );
    11021115
    11031116        // Log the results.
     
    11211134    public function update_existing_user( $uid, $subject_identity ) {
    11221135        // Add the OpenID Connect meta data.
    1123         update_user_meta( $uid, 'openid-connect-generic-subject-identity', strval( $subject_identity ) );
     1136        update_user_option( $uid, 'openid-connect-generic-subject-identity', strval( $subject_identity ), true );
    11241137
    11251138        // Allow plugins / themes to take action on user update.
  • daggerhart-openid-connect-generic/tags/3.10.3/includes/openid-connect-generic-client.php

    r3418927 r3454892  
    343343        $start_time = microtime( true );
    344344        $response   = wp_remote_get( $this->endpoint_userinfo, $request );
    345         $end_time   = microtime( true );
     345
     346        // This endpoint can support GET or POST requests according to spec, but some IDPs only allow one.
     347        // If the GET request failed to produce valid json, attempt a POST request.
     348        // Spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfoRequest.
     349        if ( ! is_wp_error( $response ) && json_decode( $response['body'] ) === null ) {
     350            $response = wp_remote_post( $this->endpoint_userinfo, $request );
     351        }
     352
     353        $end_time = microtime( true );
    346354        $this->logger->log( $this->endpoint_userinfo, 'request_userinfo', $end_time - $start_time );
    347355
  • daggerhart-openid-connect-generic/tags/3.10.3/includes/openid-connect-generic-login-form.php

    r3067237 r3454892  
    3535
    3636    /**
     37     * The client object instance.
     38     *
     39     * @var OpenID_Connect_Generic_Client
     40     */
     41    private $client;
     42
     43    /**
    3744     * The class constructor.
    3845     *
    3946     * @param OpenID_Connect_Generic_Option_Settings $settings       A plugin settings object instance.
    4047     * @param OpenID_Connect_Generic_Client_Wrapper  $client_wrapper A plugin client wrapper object instance.
    41      */
    42     public function __construct( $settings, $client_wrapper ) {
     48     * @param OpenID_Connect_Generic_Client          $client         A plugin client object instance.
     49     */
     50    public function __construct( $settings, $client_wrapper, $client ) {
    4351        $this->settings = $settings;
    4452        $this->client_wrapper = $client_wrapper;
     53        $this->client = $client;
    4554    }
    4655
     
    5059     * @param OpenID_Connect_Generic_Option_Settings $settings       A plugin settings object instance.
    5160     * @param OpenID_Connect_Generic_Client_Wrapper  $client_wrapper A plugin client wrapper object instance.
     61     * @param OpenID_Connect_Generic_Client          $client         A plugin client object instance.
    5262     *
    5363     * @return void
    5464     */
    55     public static function register( $settings, $client_wrapper ) {
    56         $login_form = new self( $settings, $client_wrapper );
     65    public static function register( $settings, $client_wrapper, $client ) {
     66        $login_form = new self( $settings, $client_wrapper, $client );
    5767
    5868        // Alter the login form as dictated by settings.
     
    140150            array(
    141151                'button_text' => __( 'Login with OpenID Connect', 'daggerhart-openid-connect-generic' ),
     152                'endpoint_login' => $this->settings->endpoint_login,
     153                'scope' => $this->settings->scope,
     154                'client_id' => $this->settings->client_id,
     155                'redirect_uri' => $this->client->get_redirect_uri(),
     156                'redirect_to' => $this->client_wrapper->get_redirect_to(),
     157                'acr_values' => $this->settings->acr_values,
    142158            ),
    143159            $atts,
     
    148164        $text = esc_html( $text );
    149165
    150         $href = $this->client_wrapper->get_authentication_url( $atts );
     166        $href = $this->client_wrapper->get_authentication_url(
     167            array(
     168                'endpoint_login' => $atts['endpoint_login'],
     169                'scope' => $atts['scope'],
     170                'client_id' => $atts['client_id'],
     171                'redirect_uri' => $atts['redirect_uri'],
     172                'redirect_to' => $atts['redirect_to'],
     173                'acr_values' => $atts['acr_values'],
     174            )
     175        );
    151176        $href = esc_url_raw( $href );
    152177
  • daggerhart-openid-connect-generic/tags/3.10.3/includes/openid-connect-generic-option-logger.php

    r3067237 r3454892  
    175175     */
    176176    private function upkeep_logs( $logs ) {
    177         $items_to_remove = count( $logs ) - $this->log_limit;
     177        $items_to_remove = is_array( $logs ) ?
     178            count( $logs ) - $this->log_limit :
     179            0;
    178180
    179181        if ( $items_to_remove > 0 ) {
  • daggerhart-openid-connect-generic/tags/3.10.3/languages/openid-connect-generic.pot

    r3418927 r3454892  
    55"Project-Id-Version: OpenID Connect Generic 3.10.1\n"
    66"Report-Msgid-Bugs-To: "
    7 "https://github.com/daggerhart/openid-connect-generic/issues\n"
     7"https://github.com/oidc-wp/openid-connect-generic/issues\n"
    88"POT-Creation-Date: 2024-04-09 01:24:09+00:00\n"
    99"MIME-Version: 1.0\n"
     
    514514
    515515#. Plugin URI of the plugin/theme
    516 msgid "https://github.com/daggerhart/openid-connect-generic"
     516msgid "https://github.com/oidc-wp/openid-connect-generic"
    517517msgstr ""
    518518
  • daggerhart-openid-connect-generic/tags/3.10.3/openid-connect-generic.php

    r3422318 r3454892  
    1717 * Plugin URI:        https://github.com/oidc-wp/openid-connect-generic
    1818 * Description:       Connect to an OpenID Connect identity provider using Authorization Code Flow.
    19  * Version:           3.10.2
     19 * Version:           3.10.3
    2020 * Requires at least: 5.0
    2121 * Requires PHP:      7.4
     
    9494     * @var string
    9595     */
    96     const VERSION = '3.10.2';
     96    const VERSION = '3.10.3';
    9797
    9898    /**
     
    168168        }
    169169
    170         OpenID_Connect_Generic_Login_Form::register( $this->settings, $this->client_wrapper );
     170        OpenID_Connect_Generic_Login_Form::register( $this->settings, $this->client_wrapper, $this->client );
    171171
    172172        // Add a shortcode to get the auth URL.
  • daggerhart-openid-connect-generic/tags/3.10.3/readme.txt

    r3422318 r3454892  
    44Requires at least: 5.0
    55Tested up to: 6.9.0
    6 Stable tag: 3.10.2
     6Stable tag: 3.10.3
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    2020Much of the documentation can be found on the Settings > OpenID Connect Generic dashboard page.
    2121
    22 Please submit issues to the Github repo: https://github.com/daggerhart/openid-connect-generic
     22Please submit issues to the Github repo: https://github.com/oidc-wp/openid-connect-generic
    2323
    2424== Installation ==
     
    5050
    5151== Changelog ==
     52
     53= 3.10.3 =
     54
     55* Fix issue with log corruption causing fatal error.
     56* Fix: Fallback to a POST request for userinfo when GET fails.
     57* Fix: Improves multisite compatibility by switching to *_user_options() functions.
     58* Fix: Fix for WordPress user session length being very short when refresh tokens are enabled.
    5259
    5360= 3.10.2 =
  • daggerhart-openid-connect-generic/trunk/docker-compose.yml

    r3067237 r3454892  
    66services:
    77  app:
    8     image: ghcr.io/ndigitals/wp-dev-container:php-8.0-node-16
     8    image: ghcr.io/ndigitals/wp-dev-container:php-8.1-node-20
    99    restart: always
    1010    depends_on:
  • daggerhart-openid-connect-generic/trunk/includes/openid-connect-generic-client-wrapper.php

    r3422318 r3454892  
    9999        // Alter the requests according to settings.
    100100        add_filter( 'openid-connect-generic-alter-request', array( $client_wrapper, 'alter_request' ), 10, 2 );
     101
     102        // Ensure tokens are refreshed before they expire.
     103        if ( $settings->token_refresh_enable ) {
     104            add_action( 'init', array( $client_wrapper, 'ensure_tokens_still_fresh' ) );
     105        }
    101106
    102107        if ( is_admin() ) {
     
    253258
    254259        $user_id = wp_get_current_user()->ID;
    255         $last_token_response = get_user_meta( $user_id, 'openid-connect-generic-last-token-response', true );
     260        $last_token_response = get_user_option( 'openid-connect-generic-last-token-response', $user_id );
     261
     262        if ( false === $last_token_response ) {
     263            $last_token_response = get_user_meta(
     264                $user_id,
     265                'openid-connect-generic-last-token-response',
     266                true
     267            );
     268        }
    256269
    257270        if ( ! empty( $last_token_response['expires_in'] ) && ! empty( $last_token_response['time'] ) ) {
     
    299312        $token_response[] = time();
    300313
    301         update_user_meta( $user_id, 'openid-connect-generic-last-token-response', $token_response );
     314        update_user_option( $user_id, 'openid-connect-generic-last-token-response', $token_response );
    302315        $this->save_refresh_token( $manager, $token, $token_response );
    303316    }
     
    369382        }
    370383
    371         $token_response = $user->get( 'openid-connect-generic-last-token-response' );
     384        $token_response = get_user_option( 'openid-connect-generic-last-token-response', $user->ID );
    372385        if ( ! $token_response ) {
    373386            // Happens if non-openid login was used.
     
    378391        }
    379392
    380         $claim = $user->get( 'openid-connect-generic-last-id-token-claim' );
     393        $claim = get_user_option( 'openid-connect-generic-last-id-token-claim', $user->ID );
    381394
    382395        if ( isset( $claim['iss'] ) && 'https://accounts.google.com' == $claim['iss'] ) {
     
    641654
    642655        // Store the tokens for future reference.
    643         update_user_meta( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
    644         update_user_meta( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
    645         update_user_meta( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
     656        update_user_option( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
     657        update_user_option( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
     658        update_user_option( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
    646659
    647660        return $user_claim;
     
    661674    public function login_user( $user, $token_response, $id_token_claim, $user_claim, $subject_identity ): void {
    662675        // Store the tokens for future reference.
    663         update_user_meta( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
    664         update_user_meta( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
    665         update_user_meta( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
     676        update_user_option( $user->ID, 'openid-connect-generic-last-token-response', $token_response );
     677        update_user_option( $user->ID, 'openid-connect-generic-last-id-token-claim', $id_token_claim );
     678        update_user_option( $user->ID, 'openid-connect-generic-last-user-claim', $user_claim );
    666679        // Allow plugins / themes to take action using current claims on existing user (e.g. update role).
    667680        do_action( 'openid-connect-generic-update-user-using-current-claim', $user, $user_claim );
     
    10991112
    11001113        // Save some meta data about this new user for the future.
    1101         add_user_meta( $user->ID, 'openid-connect-generic-subject-identity', (string) $subject_identity, true );
     1114        update_user_option( $user->ID, 'openid-connect-generic-subject-identity', (string) $subject_identity, true );
    11021115
    11031116        // Log the results.
     
    11211134    public function update_existing_user( $uid, $subject_identity ) {
    11221135        // Add the OpenID Connect meta data.
    1123         update_user_meta( $uid, 'openid-connect-generic-subject-identity', strval( $subject_identity ) );
     1136        update_user_option( $uid, 'openid-connect-generic-subject-identity', strval( $subject_identity ), true );
    11241137
    11251138        // Allow plugins / themes to take action on user update.
  • daggerhart-openid-connect-generic/trunk/includes/openid-connect-generic-client.php

    r3418927 r3454892  
    343343        $start_time = microtime( true );
    344344        $response   = wp_remote_get( $this->endpoint_userinfo, $request );
    345         $end_time   = microtime( true );
     345
     346        // This endpoint can support GET or POST requests according to spec, but some IDPs only allow one.
     347        // If the GET request failed to produce valid json, attempt a POST request.
     348        // Spec: https://openid.net/specs/openid-connect-core-1_0.html#UserInfoRequest.
     349        if ( ! is_wp_error( $response ) && json_decode( $response['body'] ) === null ) {
     350            $response = wp_remote_post( $this->endpoint_userinfo, $request );
     351        }
     352
     353        $end_time = microtime( true );
    346354        $this->logger->log( $this->endpoint_userinfo, 'request_userinfo', $end_time - $start_time );
    347355
  • daggerhart-openid-connect-generic/trunk/includes/openid-connect-generic-login-form.php

    r3067237 r3454892  
    3535
    3636    /**
     37     * The client object instance.
     38     *
     39     * @var OpenID_Connect_Generic_Client
     40     */
     41    private $client;
     42
     43    /**
    3744     * The class constructor.
    3845     *
    3946     * @param OpenID_Connect_Generic_Option_Settings $settings       A plugin settings object instance.
    4047     * @param OpenID_Connect_Generic_Client_Wrapper  $client_wrapper A plugin client wrapper object instance.
    41      */
    42     public function __construct( $settings, $client_wrapper ) {
     48     * @param OpenID_Connect_Generic_Client          $client         A plugin client object instance.
     49     */
     50    public function __construct( $settings, $client_wrapper, $client ) {
    4351        $this->settings = $settings;
    4452        $this->client_wrapper = $client_wrapper;
     53        $this->client = $client;
    4554    }
    4655
     
    5059     * @param OpenID_Connect_Generic_Option_Settings $settings       A plugin settings object instance.
    5160     * @param OpenID_Connect_Generic_Client_Wrapper  $client_wrapper A plugin client wrapper object instance.
     61     * @param OpenID_Connect_Generic_Client          $client         A plugin client object instance.
    5262     *
    5363     * @return void
    5464     */
    55     public static function register( $settings, $client_wrapper ) {
    56         $login_form = new self( $settings, $client_wrapper );
     65    public static function register( $settings, $client_wrapper, $client ) {
     66        $login_form = new self( $settings, $client_wrapper, $client );
    5767
    5868        // Alter the login form as dictated by settings.
     
    140150            array(
    141151                'button_text' => __( 'Login with OpenID Connect', 'daggerhart-openid-connect-generic' ),
     152                'endpoint_login' => $this->settings->endpoint_login,
     153                'scope' => $this->settings->scope,
     154                'client_id' => $this->settings->client_id,
     155                'redirect_uri' => $this->client->get_redirect_uri(),
     156                'redirect_to' => $this->client_wrapper->get_redirect_to(),
     157                'acr_values' => $this->settings->acr_values,
    142158            ),
    143159            $atts,
     
    148164        $text = esc_html( $text );
    149165
    150         $href = $this->client_wrapper->get_authentication_url( $atts );
     166        $href = $this->client_wrapper->get_authentication_url(
     167            array(
     168                'endpoint_login' => $atts['endpoint_login'],
     169                'scope' => $atts['scope'],
     170                'client_id' => $atts['client_id'],
     171                'redirect_uri' => $atts['redirect_uri'],
     172                'redirect_to' => $atts['redirect_to'],
     173                'acr_values' => $atts['acr_values'],
     174            )
     175        );
    151176        $href = esc_url_raw( $href );
    152177
  • daggerhart-openid-connect-generic/trunk/includes/openid-connect-generic-option-logger.php

    r3067237 r3454892  
    175175     */
    176176    private function upkeep_logs( $logs ) {
    177         $items_to_remove = count( $logs ) - $this->log_limit;
     177        $items_to_remove = is_array( $logs ) ?
     178            count( $logs ) - $this->log_limit :
     179            0;
    178180
    179181        if ( $items_to_remove > 0 ) {
  • daggerhart-openid-connect-generic/trunk/languages/openid-connect-generic.pot

    r3418927 r3454892  
    55"Project-Id-Version: OpenID Connect Generic 3.10.1\n"
    66"Report-Msgid-Bugs-To: "
    7 "https://github.com/daggerhart/openid-connect-generic/issues\n"
     7"https://github.com/oidc-wp/openid-connect-generic/issues\n"
    88"POT-Creation-Date: 2024-04-09 01:24:09+00:00\n"
    99"MIME-Version: 1.0\n"
     
    514514
    515515#. Plugin URI of the plugin/theme
    516 msgid "https://github.com/daggerhart/openid-connect-generic"
     516msgid "https://github.com/oidc-wp/openid-connect-generic"
    517517msgstr ""
    518518
  • daggerhart-openid-connect-generic/trunk/openid-connect-generic.php

    r3422318 r3454892  
    1717 * Plugin URI:        https://github.com/oidc-wp/openid-connect-generic
    1818 * Description:       Connect to an OpenID Connect identity provider using Authorization Code Flow.
    19  * Version:           3.10.2
     19 * Version:           3.10.3
    2020 * Requires at least: 5.0
    2121 * Requires PHP:      7.4
     
    9494     * @var string
    9595     */
    96     const VERSION = '3.10.2';
     96    const VERSION = '3.10.3';
    9797
    9898    /**
     
    168168        }
    169169
    170         OpenID_Connect_Generic_Login_Form::register( $this->settings, $this->client_wrapper );
     170        OpenID_Connect_Generic_Login_Form::register( $this->settings, $this->client_wrapper, $this->client );
    171171
    172172        // Add a shortcode to get the auth URL.
  • daggerhart-openid-connect-generic/trunk/readme.txt

    r3422318 r3454892  
    44Requires at least: 5.0
    55Tested up to: 6.9.0
    6 Stable tag: 3.10.2
     6Stable tag: 3.10.3
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    2020Much of the documentation can be found on the Settings > OpenID Connect Generic dashboard page.
    2121
    22 Please submit issues to the Github repo: https://github.com/daggerhart/openid-connect-generic
     22Please submit issues to the Github repo: https://github.com/oidc-wp/openid-connect-generic
    2323
    2424== Installation ==
     
    5050
    5151== Changelog ==
     52
     53= 3.10.3 =
     54
     55* Fix issue with log corruption causing fatal error.
     56* Fix: Fallback to a POST request for userinfo when GET fails.
     57* Fix: Improves multisite compatibility by switching to *_user_options() functions.
     58* Fix: Fix for WordPress user session length being very short when refresh tokens are enabled.
    5259
    5360= 3.10.2 =
Note: See TracChangeset for help on using the changeset viewer.