Bug(バグ) #2599
closedメンバー登録画面からOpenIDの認証をおこなうと、プロバイダの認証後にプロフィール登録画面ではなくメンバー登録画面に遷移してしまう
100%
Description
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)に遷移するよう変更をお願いします
Updated by Yuya Watanabe about 13 years ago
- Assignee set to Yuya Watanabe
- Target version set to 1.3.1
Updated by Yuya Watanabe about 13 years ago
- Status changed from New(新規) to 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); }
Updated by Yuya Watanabe about 13 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
Updated by Kousuke Ebihara about 13 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
Updated by Yuma Sakata about 13 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100
テストOKです。