Project

General

Profile

Backport(バックポート) #2525

OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある

Added by Kousuke Ebihara about 8 years ago. Updated about 8 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Assignee:
Target version:
Start date:
2011-05-12
Due date:
% Done:

100%


Description

Overview (現象)

OpenPNE2の時にかんたんログインを設定しておき、そのSNSをOpenPNE3系(3.4 or 3.6)にコンバートした場合、設定した携帯機種でかんたんログインできない。
au(misora)はかんたんログインできるが、softbankとdocomoの携帯でかんたんログインできない。
本来はかんたんログインできるのが正しい仕様である。

もちろん、コンバート後かんたんログインを再設定すれば再びかんたんログインできるようになる。

再現バージョン

  • OpenPNE3.6beta10-dev
  • OpenPNE3.4.12-dev

再現した携帯機種

  • Docomo SH-05A,P901is
  • softbank 840P

再現手順

  1. OpenPNE2.14で携帯(au、docomo、softbank)を登録する
  2. かんたんログインできるようにしておく(個体識別番号を登録しておく)
  3. 手順1で登録したSNSをOpenPNE3.6(または3.4)にコンバートする
  4. 手順1で登録した携帯でかんたんログインを試みる
  5. auはかんたんログインできる
  6. docomoとsoftbankはかんたんログイン出来ずにログイン失敗しましたのページに遷移する

Causes (原因)

OpenPNE 2 では端末付与型の携帯電話個体識別番号を優先して取得しているにも関わらず、 OpenPNE 3 ではゲートウェイ付与型の携帯電話個体識別番号を優先して取得し、かんたんログインに使用しているため。

Way to fix (修正内容)

ゲートウェイ付与型の携帯電話個体識別番号のみ取得や、端末付与型の携帯電話個体識別番号のみの取得がおこなえるようにし、かんたんログインなどそれらの区別が必要な場面において柔軟に対応できるようにした。

この変更を利用したかんたんログイン自体の実装の修正については、 opAuthMobileUIDPlugin 側で実施した。 http://redmine.openpne.jp/issues/2220


Related issues

Related to OpenPNE 3 - Bug(バグ) #2087: OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある Fixed(完了) 2011-05-12
Related to OpenPNE 3 - Task(タスク) #2527: opAuthMobileUIDPlugin 1.0.1 のリリースとバンドルをおこなう Fixed(完了) 2011-10-19

Associated revisions

Revision 41d367ac (diff)
Added by Kousuke Ebihara about 8 years ago

added test for fallback uid (fixes #2525, BP from #2087)

BP from #2087
ae8664d1d5568a4c22dbacc64e4318abbbed71e2

Revision d567ad5c (diff)
Added by Yuya Watanabe about 8 years ago

divided opWebRequest::getMobileUID() into retriving normal uid part, retriving fallback uid part and hashing uid part (refs #2525, BP from #2087)

BP from #2087
9f3f558e9c6075454cbcc095f110bf7eaf9c5e73

Revision 52bf5c90 (diff)
Added by Yuya Watanabe about 8 years ago

changed to retrieve only non-fallback mobile uid in OpenPNE 3 core because fallback uid is just for keeping BC reason (refs #2525, BP from #2087)

BP from #2087
89da5b0c6632cfac9c668df9da331aca3a037332

Revision ee4b26c3 (diff)
Added by Kousuke Ebihara about 8 years ago

changed not to retrieve fallback uid in member/registerMobileToRegisterEnd (oversight in my 89da5b0c commit) (refs #2525, BP from #2087)

BP from #2087
05c7f459f684fbe3c3c9dbd43e8f8c2ce4a04784

Revision 6a463216 (diff)
Added by Kousuke Ebihara about 8 years ago

added importing configuration for keeping backward compatible with a legacy (insecure) implementation of mobile uid authentication on upgrade from OpenPNE 2 (refs #2525, BP from #2087)

BP from #2087
0601f3e28cb9374f30dfae31e0ef1d4ab6190853

Revision 6468e65c (diff)
Added by Yuya Watanabe about 8 years ago

changed opWebRequest::getMobileFallbackUID() to return both of OpenPNE 3 format ID and OpenPNE 2 format one (refs #2525, BP from #2087)

BP from #2087
50d374cd0634027da5abd226c78550f8adbd8410

Revision 2f709f43 (diff)
Added by Yuya Watanabe about 8 years ago

(fixes #2525, BP from #2087) removed end parenthesis

History

#1 Updated by Yuya Watanabe about 8 years ago

  • Status changed from New(新規) to Accepted(着手)
  • Assignee set to Yuya Watanabe

#2 Updated by Yuya Watanabe about 8 years ago

#1113 の変更によってコンフリクトが発生する部分について

9f3f558e9c6075454cbcc095f110bf7eaf9c5e73 の変更によってgetMobileUID()に引数を付与することができるようになった.
また 89da5b0c6632cfac9c668df9da331aca3a037332 の変更によってgetMobileUID()を用いる部分で必要な箇所について適宜引数が与えれるように変更された.

3.4 では 89da5b0c6632cfac9c668df9da331aca3a037332 の対応部分においてコンフリクトが発生する.具体的には以下の部分である.
apps/mobile_frontend/modules/member/actions/actions.class.php
3.4

106         if ($request->hasParameter('update'))
107         {
108           if (!$request->getMobileUID())
109           {
110             $this->getUser()->setFlash('error', 'Your mobile UID was not registered.');
111             $this->redirect('member/configUID');
112           }
113 
114           $memberConfig = Doctrine::getTable('MemberConfig')->retrieveByNameAndMemberId('mobile_uid', $this->getUser()->getMemberId());
115           if (!$memberConfig)
116           {
117             $memberConfig = new MemberConfig();
118             $memberConfig->setMember($this->getUser()->getMember()); 
119             $memberConfig->setName('mobile_uid');
120           }
121           $memberConfig->setValue($request->getMobileUID());       
122           $memberConfig->save();
123           $this->getUser()->setFlash('notice', 'Your mobile UID was set successfully.');
124           $this->redirect('member/configUID');
125         }
126         elseif ($request->hasParameter('delete') && $this->isDeletableUid)
127         {
128           $mobileUid->delete();
129           $this->getUser()->setFlash('notice', 'Your mobile UID was deleted successfully.'); 
130           $this->redirect('member/configUID');
131         }

3.7

 82         if ($request->hasParameter('update'))
 83         {
 84           $cookieUid = sfContext::getInstance()->getResponse()->generateMobileUidCookie();
 85 
 86           if (!$request->getMobileUID(false) && !$cookieUid)
 87           {
 88             $this->getUser()->setFlash('error', 'Your mobile UID was not registered.');
 89             $this->redirect('member/configUID');
 90           }
 91 
 92           $member = $this->getUser()->getMember();
 93           $member->setConfig('mobile_uid', $request->getMobileUID(false));
 94           if ($cookieUid)
 95           {
 96             $member->setConfig('mobile_cookie_uid', $cookieUid);
 97           }
 98 
 99           $this->getUser()->setFlash('notice', 'Your mobile UID was set successfully.');
100           $this->redirect('member/configUID');
101         }
102         elseif ($request->hasParameter('delete') && $this->isDeletableUid)
103         {
104           $mobileUid->delete();
105           sfContext::getInstance()->getResponse()->deleteMobileUidCookie();
106           $this->getUser()->setFlash('notice', 'Your mobile UID was deleted successfully.');
107           $this->redirect('member/configUID');
108         }
109       }

#1113 は 3.4 では対応されていないため 3.4 の121行目と 3.7 の93行目について比較を行い, 3.4 の121行目のgetMobileUID()の引数にfalseが必要であるかどうかを検討したところ 内容的には 3.4 の内容とほぼ一致したことを確認したため必要であると判断した.

比較用コード断片

3.7 lib/model/doctrine/Member.class.php

 97   public function setConfig($configName, $value, $isDateTime = false)
 98   {
 99     Doctrine::getTable('MemberConfig')->setValue($this->getId(), $configName, $value, $isDateTime);
100   }

3.7 lib/model/doctrine/MemberConfigTable.class.php

 93   public function setValue($memberId, $name, $value, $isDateTime = false)
 94   {
 95     $config = $this->retrieveByNameAndMemberId($name, $memberId);
 96     if (!$config)
 97     {
 98       $config = new memberConfig();
 99       $config->setMemberId($memberId);
100       $config->setName($name);
101     }
102     if ($isDateTime)
103     {
104       $config->setValueDatetime($value);
105     }
106     $config->setValue($value);
107     $config->save();
108     $this->results[$memberId][$name] = $config;
109   }

#3 Updated by Yuya Watanabe about 8 years ago

メモ

#1810534dd33ce9f2fbb46f747c74fd7bce558be95ca6 が原因でコンフリクトするが, #2241 で示される通り 3.4 では対応する必要がない.

#4 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

更新履歴 41d367ac7ca6d95a1813a812e01d5dc628c388b9 で適用されました。

#5 Updated by Yuma Sakata about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

frontend、backend 共にログインできなくなり、devモードで確認したところ、以下エラーが表示されました。

Parse error: syntax error, unexpected ')' in /home/sakata/sns/34x.hoge.jp/lib/request/sfOpenPNEWebRequest.class.php on line 137

該当ファイルの137行目を確認したところ、以下エラーが表示されました。

$uid = $this->hashMobileUid($this->getMobile()->getUID()));

この問題が含まれていたコミットも記述します。

d567ad5c (watanabe        2011-10-26 16:36:59 +0900 137)     $uid = $this->hashMobileUid($this->getMobile()->getUID()));

) が1つ多いのが原因だと思われますので、修正お願いします。

#6 Updated by wa ta about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

更新履歴 2f709f43627e8637756405bd1c862802e59d3770 で適用されました。

#7 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#8 Updated by Yuma Sakata about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
  • % Done changed from 70 to 50

2.12 → 3.4.17 アップグレードした場合、au(misora)はかんたんログインできるが、softbank(840P)とdocomo(N-01B)の携帯でかんたんログインできませんでした。
docomo と softbank でもかんたんログインできるように修正お願いします。

#9 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

Yuma Sakata は書きました:

2.12 → 3.4.17 アップグレードした場合、au(misora)はかんたんログインできるが、softbank(840P)とdocomo(N-01B)の携帯でかんたんログインできませんでした。
docomo と softbank でもかんたんログインできるように修正お願いします。

この指摘についてですが、おそらく #2526 への対応が必要です。コード上は問題ないと思われるためテスト待ちに戻しますが、実際のテストはプラグイン側の対応がおこなわれるまで待ってください。

#10 Updated by Yuma Sakata about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テストOKです。

Also available in: Atom PDF