Changeset 20845


Ignore:
Timestamp:
2011/04/15 12:45:37 (10 years ago)
Author:
shutta
Message:

refs #1196 (【2.11系DB移行機能】顧客情報)
2.11未満のバージョンからのデータ移行を考慮して、パスワード、秘密の質問の照合・更新処理を調整

Location:
branches/version-2_11-dev/data/class
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_11-dev/data/class/helper/SC_Helper_Customer.php

    r20844 r20845  
    4949        if(is_numeric($customer_id)) { 
    5050            $salt = $objQuery->get('salt', "dtb_customer", "customer_id = ? ", array($customer_id)); 
     51 
     52            // 旧バージョン(2.11未満)からの移行を考慮 
     53            if (empty($salt)) $old_version_flag = true; 
    5154        }else{ 
    5255            $salt = SC_Utils_Ex::sfGetRandomString(10); 
     
    5861            unset($array['password']); 
    5962        } else { 
     63            // 旧バージョン(2.11未満)からの移行を考慮 
     64            if ($old_version_flag) { 
     65                $is_password_updated = true; 
     66                $salt = SC_Utils_Ex::sfGetRandomString(10); 
     67                $array['salt'] = $salt; 
     68            } 
     69 
    6070            $array['password'] = SC_Utils_Ex::sfGetHashString($array['password'], $salt); 
    6171        } 
     
    6474            //更新しない 
    6575            unset($array["reminder_answer"]); 
     76 
     77            // 旧バージョン(2.11未満)からの移行を考慮 
     78            if ($old_version_flag && $is_password_updated) { 
     79                // パスワードが更新される場合は、平文になっている秘密の質問を暗号化する 
     80                $reminder_answer = $objQuery->get('reminder_answer', "dtb_customer", "customer_id = ? ", array($customer_id)); 
     81                $array["reminder_answer"] = SC_Utils_Ex::sfGetHashString($reminder_answer, $salt); 
     82            } 
    6683        } else { 
    67             $array["reminder_answer"] = SC_Utils_Ex::sfGetHashString($array["reminder_answer"], $salt); 
     84            // 旧バージョン(2.11未満)からの移行を考慮 
     85            if ($old_version_flag && !$is_password_updated) { 
     86                // パスワードが更新されない場合は、平文のままにする 
     87                unset($array['salt']); 
     88            } else { 
     89                $array["reminder_answer"] = SC_Utils_Ex::sfGetHashString($array["reminder_answer"], $salt); 
     90            } 
    6891        } 
    6992 
  • branches/version-2_11-dev/data/class/pages/forgot/LC_Page_Forgot.php

    r20764 r20845  
    204204                and $result[0]['reminder'] == $arrForm['reminder']) { 
    205205 
    206             if (SC_Utils_Ex::sfIsMatchHashPassword($arrForm['reminder_answer'], 
     206            $is_authorized = false; 
     207            if (empty($result[0]['salt'])) { 
     208                // 旧バージョン(2.11未満)からの移行を考慮 
     209                if ($result[0]['reminder_answer'] == $arrForm['reminder_answer']) { 
     210                    $is_authorized = true; 
     211                } 
     212            } 
     213            elseif (SC_Utils_Ex::sfIsMatchHashPassword($arrForm['reminder_answer'], 
    207214                     $result[0]['reminder_answer'], $result[0]['salt'])) { 
     215                $is_authorized = true; 
     216            } 
     217 
     218            if ($is_authorized) { 
    208219                // 秘密の答えが一致 
    209220                // 新しいパスワードを設定する 
  • branches/version-2_11-dev/data/class/util/SC_Utils.php

    r20841 r20845  
    21222122                } 
    21232123            } else { 
    2124                 $hash = SC_Utils_Ex::sfGetHashString($pass, $salt); 
     2124                if (empty($salt)) { 
     2125                    // 旧バージョン(2.11未満)からの移行を考慮 
     2126                    $hash = sha1($pass . ":" . AUTH_MAGIC); 
     2127                } else { 
     2128                    $hash = SC_Utils_Ex::sfGetHashString($pass, $salt); 
     2129                } 
    21252130                if($hash === $hashpass) { 
    21262131                    $res = true; 
Note: See TracChangeset for help on using the changeset viewer.