get_label() ); } /** * Prints the form that prompts the user to authenticate. * * @since 0.1-dev * * @param WP_User $user WP_User object of the logged-in user. */ abstract public function authentication_page( $user ); /** * Allow providers to do extra processing before the authentication. * Return `true` to prevent the authentication and render the * authentication page. * * @param WP_User $user WP_User object of the logged-in user. * @return boolean */ public function pre_process_authentication( $user ) { return false; } /** * Validates the users input token. * * @since 0.1-dev * * @param WP_User $user WP_User object of the logged-in user. * @return boolean */ abstract public function validate_authentication( $user ); /** * Whether this Two Factor provider is configured and available for the user specified. * * @param WP_User $user WP_User object of the logged-in user. * @return boolean */ abstract public function is_available_for_user( $user ); /** * Generate a random eight-digit string to send out as an auth code. * * @since 0.1-dev * * @param int $length The code length. * @param string|array $chars Valid auth code characters. * @return string */ public function get_code( $length = 8, $chars = '1234567890' ) { $code = ''; if ( is_array( $chars ) ) { $chars = implode( '', $chars ); } for ( $i = 0; $i < $length; $i++ ) { $code .= substr( $chars, wp_rand( 0, strlen( $chars ) - 1 ), 1 ); } return $code; } }