Make WordPress Core


Ignore:
Timestamp:
06/04/2024 02:42:29 PM (21 months ago)
Author:
audrasjb
Message:

Login and Registration: Flush user_activation_key after successfully login.

This changeset ensures the user_activation_key is flushed after successful login, so reset password links can not be used anymore after the user successfully log into their dashboard.

Props nsinelnikov, rajinsharwar, Rahmohn, oglekler, hellofromTonya.
Fixes #58901.
See #32429

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/auth.php

    r57990 r58333  
    425425
    426426    /**
     427     * Ensure that the user_activation_key is cleared (if available) after a successful login.
     428     *
     429     * @ticket 58901
     430     */
     431    public function test_user_activation_key_after_successful_login() {
     432        global $wpdb;
     433
     434        $reset_key                    = get_password_reset_key( $this->user );
     435        $user                         = wp_signon(
     436            array(
     437                'user_login'    => self::USER_LOGIN,
     438                'user_password' => self::USER_PASS,
     439            )
     440        );
     441        $activation_key_from_database = $wpdb->get_var(
     442            $wpdb->prepare( "SELECT user_activation_key FROM $wpdb->users WHERE ID = %d", $this->user->ID )
     443        );
     444
     445        $this->assertNotWPError( $reset_key, 'The password reset key was not created.' );
     446        $this->assertNotWPError( $user, 'The user was not authenticated.' );
     447        $this->assertEmpty( $user->user_activation_key, 'The `user_activation_key` was not empty on the user object returned by `wp_signon` function.' );
     448        $this->assertEmpty( $activation_key_from_database, 'The `user_activation_key` was not empty in the database.' );
     449    }
     450
     451    /**
    427452     * Ensure users can log in using both their username and their email address.
    428453     *
Note: See TracChangeset for help on using the changeset viewer.