WPDiscourse - 로그아웃이 작동하지 않음

?request=logout

다음과 같은 결과가 나타납니다.

Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /var/www/vhosts/localhost/html/wp-includes/http.php:251 Stack trace: #0 /var/www/vhosts/localhost/html/wp-content/plugins/wp-discourse/lib/plugin-utilities.php(188): wp_remote_retrieve_response_code() #1 /var/www/vhosts/localhost/html/wp-content/plugins/wp-discourse/lib/sso-client/client.php(477): WPDiscourse\DiscourseBase->validate() #2 /var/www/vhosts/localhost/html/wp-includes/class-wp-hook.php(307): WPDiscourse\SSOClient\Client->logout_from_discourse() #3 /var/www/vhosts/localhost/html/wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters() #4 /var/www/vhosts/localhost/html/wp-includes/plugin.php(476): WP_Hook->do_action() #5 /var/www/vhosts/localhost/html/wp-includes/pluggable.php(1104): do_action() #6 /var/www/vhosts/localhost/html/wp-includes/pluggable.php(660): wp_clear_auth_cookie() #7 /var/www/vhosts/localhost/html/wp-content/plugins/wp-discourse/lib/sso-client/query-redirect.php(68): wp_logout() #8 /var/www/vhosts/localhost/html/wp-includes/class-wp-hook.php(307): WPDiscourse\SSOClient\QueryRedirect->discourse_sso_url_redirect() #9 /var/www/vhosts/localhost/html/wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters() #10 /var/www/vhosts/localhost/html/wp-includes/plugin.php(524): WP_Hook->do_action() #11 /var/www/vhosts/localhost/html/wp-includes/class-wp-query.php(1104): do_action_ref_array() #12 /var/www/vhosts/localhost/html/wp-includes/class-wp-query.php(1792): WP_Query->parse_query() #13 /var/www/vhosts/localhost/html/wp-includes/class-wp-query.php(3586): WP_Query->get_posts() #14 /var/www/vhosts/localhost/html/wp-includes/class-wp-query.php(3718): WP_Query->query() #15 /var/www/vhosts/localhost/html/wp-content/plugins/happyfiles-pro/includes/data.php(197): WP_Query->__construct() #16 /var/www/vhosts/localhost/html/wp-includes/class-wp-hook.php(307): HappyFiles\Data::get_folders() #17 /var/www/vhosts/localhost/html/wp-includes/class-wp-hook.php(331): WP_Hook->apply_filters() #18 /var/www/vhosts/localhost/html/wp-includes/plugin.php(476): WP_Hook->do_action() #19 /var/www/vhosts/localhost/html/wp-settings.php(598): do_action() #20 /var/www/vhosts/localhost/html/wp-config.php(85): require_once('...') #21 /var/www/vhosts/localhost/html/wp-load.php(50): require_once('...') #22 /var/www/vhosts/localhost/html/wp-blog-header.php(13): require_once('...') #23 /var/www/vhosts/localhost/html/index.php(17): require('...') #24 {main} thrown in /var/www/vhosts/localhost/html/wp-includes/http.php on line 251

내일 아침 CET 기준으로 가장 먼저 확인하겠습니다.

괜찮아요, 고마워요. 제 쪽에서 문제가 있는 것 같긴 한데, 재현이 되는지 아닌지 알려주시면 좋겠어요.

Wordpress, Discourse Connect, Discourse 모두 최신 버전을 사용 중입니다.

PHP 8을 사용 중인데 (이게 문제일까요?)

DiscourseConnect를 프로바이더가 아닌 클라이언트로 사용하고 있는데, 이게 영향을 줄까요?

결국 Wordpress를 프로바이더로 전환할 예정이지만, 모든 사용자를 마이그레이션하는 최선의 방법을 결정해야 합니다 :laughing:

@Fma965 이것은 실제로 존재하는 버그입니다. 거의 1년 동안 남아 있었습니다. 다음 조건에서 발생합니다.

  • WP를 DiscourseConnect 클라이언트로 사용하는 경우;
  • 동기 로그아웃이 활성화된 경우; 그리고
  • (php 오류 처리 설정에 따라 다름)

보고해 주셔서 감사합니다!

이 PR이 병합되고 2.4.5가 배포되면 수정됩니다.

cc @simon

@Fma965님과 @angus님께 감사드립니다. WP Discourse 2.4.5 버전이 이제 WordPress 저장소에서 사용 가능합니다.

Angus, 감사합니다. SSO 방향을 이미 바꿔놓았어요. 생각했던 것보다 훨씬 간단했네요. 사용자를 가져온 후 이미 인증된 상태로 표시하고, 사용자에게 비밀번호 재설정을 요청하기만 하면 되더라고요.

그래서 테스트는 못 해봤지만, 의도대로 잘 작동할 거라 확신합니다. 이렇게 빨리 처리해 주셔서 감사합니다.

그리고 @simon, 배포해 주셔서 감사합니다.