Bug(バグ) #2344
Minoru Takai さんが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 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->getCurrentAuthMode() から値を取得する必要のある処理をさせない修正を実施する * 管理画面の AdminInviteForm クラスは InviteForm クラスを親クラスとして扱っているが、save() メソッドはオーバーライドされているので、Member::setInviteMemberId() が呼ばれることがないので上記修正で問題はでないと考えられる * Member::setInviteMemberId() に紹介者のIDをセットする場合は、いずれの場合も、sfUser::getMemberId() が呼べる処理の流れになっているため、上記修正で問題ないと考える