プロジェクト

全般

プロフィール

Bug(バグ) #2344

Shinichi Urabe さんが13年以上前に更新

h3. Overview (現象) 

 OpenPNE3.4.15-devで、携帯で新規登録ができない。 
 新規登録リンクをクリックし、opAuthMailAddress/requestRegisterURLのページから登録ページのURLを取得しようとすると、「サーバーが混み合っています」というエラーメッセージが携帯メールに届く。 

 h3. 再現バージョン 

  * OpenPNE3.4.13 〜 OpenPNE3.4.15-dev 
  * opAuthMailAddressPlugin 1.2.1 

 その他のバージョンでは再現しません。 

 h3. 再現手順 

 # 管理画面のopAuthMailAdressPluginの設定で招待モードの設定を「招待なしでの登録を許可する」にする 
 # 携帯でログイン画面にアクセスする 
 # 新規登録リンクをクリックし、opAuthMailAddress/requestRegisterURLのページにアクセスする 
 # メールで登録のリンクをクリックし登録ページのURLを取得するメールを送る 
 # エラーメッセージが届く 

 h3. Causes (原因) 

 新規登録時に plugins/opAuthMailAddressPlugin/apps/mobile_mail_frontend/modules/opAuthMailAddress/actions/actions.class.php から InviteForm が呼ばれるが InviteForm::save() を実施された際に 143行目に以下のような処理が存在する。#2044 で myUser クラスの親クラスを sfOpenPNESecurityUser から sfBasicSecurityUser に変更されたことにより、getMemberId() getCurrentAuthMode() は定義されていないため、この処理でエラーとなってしまう 

 * OpenPNE 3.6 用の opAuthMailAddressPlugin では InviteForm クラスは呼ばれず、構造自体異なるため、3.4.15-dev で発生するような問題はない 
 * OpenPNE 3.2 については mobile_mail_frontend アプリケーションの myUser クラスの親クラスは fOpenPNESecurityUser であるので問題はでない 

 <pre> 
 $this->member->setInviteMemberId($user->getMemberId()); 
 $this->member->setConfig('register_auth_mode', $this->getOption('authMode', $user->getCurrentAuthMode())); 
 </pre> 

 h3. Way to fix (修正内容) 

 * InviteForm::save() 処理内、$user オブジェクトが sfOpenPNESecurityUser でなければ、$user->getMemberId() であれば、$user->getMemberId() $user->getCurrentAuthMode() から値を取得する必要のある処理をさせない修正を実施する 

  * 管理画面の AdminInviteForm クラスは InviteForm クラスを親クラスとして扱っているが、save() メソッドはオーバーライドされているので、Member::setInviteMemberId() が呼ばれることがないので上記修正で問題はでないと考えられる 
  * Member::setInviteMemberId() に紹介者のIDをセットする場合は、いずれの場合も、sfUser::getMemberId() が呼べる処理の流れになっているため、上記修正で問題ないと考える

戻る