プロジェクト

全般

プロフィール

Bug(バグ) #2599

完了

メンバー登録画面からOpenIDの認証をおこなうと、プロバイダの認証後にプロフィール登録画面ではなくメンバー登録画面に遷移してしまう

Kiwa Sakai さんがほぼ13年前に追加. ほぼ13年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-11-15
期日:
進捗率:

100%

予定工数:
3.6 で発生するか:
[QA]バグ通知済:
いいえ
3.8 で発生するか:

説明

Overview (現象)

メンバーからのSNSの招待から登録画面を開き、メンバー登録画面(member/register)でOpenIDを選択し認証をおこなうと、プロフィール登録画面(/member/registerInput)ではなくメンバー登録画面に戻ってしまう。

Environment (再現バージョン)

OpenPNE 3.6.0

Way to repro (再現手順)

1. メンバーAが友人招待 (/member/invite)からSNS未登録のメンバーBのメールアドレスに招待メールを送る
2. メンバーBが 1 で送信されたメールをひらき、本文にあるメンバー登録URLにアクセスする
3. メンバー登録画面(member/register)が表示されるので、「OpenID で登録する」のフォームに OppenID のURLを入力し、「この OpenID を使用して登録する」ボタンを押下する
4. プロバイダ側の認証が表示されるので、通信を許可する設定にする
5. プロバイダ側の設定後、遷移先がプロフィール登録画面(/member/registerInput)ではなくメンバー登録画面(member/register)に戻る

OpenIDの認証完了後、プロフィール登録画面(/member/registerInput)に遷移するよう変更をお願いします

Yuya Watanabe さんがほぼ13年前に更新

  • 担当者Yuya Watanabe にセット
  • 対象バージョン1.3.1 にセット

Yuya Watanabe さんがほぼ13年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

原因

下記コード部で20行目や21行目では登録開始あるいは終了かどうかでリダイレクトを行なっているが,13行目でlogin()処理を行なっている.これは新規登録時だとloginできない(登録されていないため)ので20行目および21行目に到達することができず,プロフィール登録ができない状態となっている.

apps/pc_frontend/modules/OpenID/actions/registerOpenIDConfirmAction.class.php

 11 class RegisterOpenIDConfirmAction extends sfAction                                                                 
 12 {
 13   public function execute($request)                                                                                
 14   {
 15     $this->forward404Unless($request->hasParameter('authMode'));                                                   
 16     $this->getUser()->setCurrentAuthMode('OpenID');
 17 
 18     if ($uri = $this->getUser()->login())                                                                          
 19     {                                                                                                              
 20       $this->redirectIf($this->getUser()->isRegisterBegin(), $this->getUser()->getRegisterInputAction());          
 21       $this->redirectIf($this->getUser()->isRegisterFinish(), $this->getUser()->getRegisterEndAction());           
 22       $this->redirectIf($this->getUser()->isMember(), $uri);                                                       
 23     }
 24 
 25     $this->getUser()->setFlash('error', 'Invalid.');                                                               
 26     $this->redirect('member/register?token='.$request['token']);                                                   
 27   }
 28 }

修正案

login処理を行う前に新規登録状態かどうかのリダイレクト処理を行う.

diff --git a/apps/pc_frontend/modules/OpenID/actions/registerOpenIDConfirmAction.class.php b/apps/pc_frontend/modules/OpenID/actions/registerOpenIDConfirmAction.class.php
index 3f99c6c..4003f86 100644
--- a/apps/pc_frontend/modules/OpenID/actions/registerOpenIDConfirmAction.class.php
+++ b/apps/pc_frontend/modules/OpenID/actions/registerOpenIDConfirmAction.class.php
@@ -15,10 +15,10 @@ class RegisterOpenIDConfirmAction extends sfAction
     $this->forward404Unless($request->hasParameter('authMode'));
     $this->getUser()->setCurrentAuthMode('OpenID');

+    $this->redirectIf($this->getUser()->isRegisterBegin(), $this->getUser()->getRegisterInputAction());
+    $this->redirectIf($this->getUser()->isRegisterFinish(), $this->getUser()->getRegisterEndAction());
     if ($uri = $this->getUser()->login())
     {
-      $this->redirectIf($this->getUser()->isRegisterBegin(), $this->getUser()->getRegisterInputAction());
-      $this->redirectIf($this->getUser()->isRegisterFinish(), $this->getUser()->getRegisterEndAction());
       $this->redirectIf($this->getUser()->isMember(), $uri);
     }

Yuya Watanabe さんがほぼ13年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

Kousuke Ebihara さんがほぼ13年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

Yuma Sakata さんがほぼ13年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

他の形式にエクスポート: Atom PDF