diff --git a/library/LibModels/Web/Passport/BackData.php b/library/LibModels/Web/Passport/BackData.php new file mode 100644 index 0000000..45a614e --- /dev/null +++ b/library/LibModels/Web/Passport/BackData.php @@ -0,0 +1,38 @@ +<?php +namespace LibModels\Web\Passport; +use Api\Sign; +use Api\Yohobuy; +class BackData extends \LibModels\Wap\Passport\BackData +{ + /** + * 验证找回邮件code + * + * @param string $code + * @return array + */ + public static function checkEmailCode($code) + { + $param = Yohobuy::param(); + $param['method'] = 'app.register.checkCodeValid'; + $param['code'] = $code; + $param['client_secret'] = Sign::getSign($param); + return Yohobuy::get(Yohobuy::API_URL, $param, 3600); // 缓存1小时 + } + + /** + * 根据邮箱code修改密码 + * + * @param string $code + * @param string $password + * @return array + */ + public static function modifyPasswordByEmailCode($code, $password) + { + $param = Yohobuy::param(); + $param['method'] = 'app.register.resetPwdByCode'; + $param['code'] = $code; + $param['newPwd'] = $password; + $param['client_secret'] = Sign::getSign($param); + return Yohobuy::get(Yohobuy::API_URL, $param); + } +} \ No newline at end of file diff --git a/yohobuy/www.yohobuy.com/application/modules/Passport/controllers/Back.php b/yohobuy/www.yohobuy.com/application/modules/Passport/controllers/Back.php index 8fce69f..7a2aa94 100644 --- a/yohobuy/www.yohobuy.com/application/modules/Passport/controllers/Back.php +++ b/yohobuy/www.yohobuy.com/application/modules/Passport/controllers/Back.php @@ -3,7 +3,7 @@ use Action\WebAction; use LibModels\Web\Passport\RegData; use Passport\PassportModel; use Plugin\Helpers; -use LibModels\Wap\Passport\BackData; +use LibModels\Web\Passport\BackData; use Plugin\AuthCode; class BackController extends WebAction { @@ -43,14 +43,14 @@ class BackController extends WebAction { if (Helpers::verifyEmail($phoneNum)) { $ret = PassportModel::getUserInfoByEmail($phoneNum); if (empty($ret)) { - $data['message'] = '该账户不存在'; - $data['code'] = 400; + $data['message'] = '该邮件账户不存在'; + $data['code'] = 401; } } else if (Helpers::verifyMobile($phoneNum)) { $ret = PassportModel::getUserInfoByMobile($area, $phoneNum); if (empty($ret)) { - $data['message'] = '该账户不存在'; - $data['code'] = 400; + $data['message'] = '该手机号不存在'; + $data['code'] = 402; } } } else { @@ -135,7 +135,22 @@ class BackController extends WebAction { { $code = $this->get('code'); $info = $this->checkCode($code); - if (empty ( $info )) { + $verifyState = false;//验证状态 + $ret = array(); + if (!empty ( $info )) { + $verifyState = true; + if(isset($info['uid'])) { //老版修改邮箱密码 + $verifyState = false;//重新找回密码 + } + } else { + $ret = BackData::checkEmailCode($code); + if(isset($ret['data']) && $ret['code'] == 200) { + $verifyState = true; + } + } + //验证失败 + if(!$verifyState) + { $this->redirect ('index'); } $banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE); @@ -160,23 +175,29 @@ class BackController extends WebAction { $code = $this->post('code'); $password = $this->post('pwd'); $info = $this->checkCode($code); - if (Helpers::verifyPassword ($password) && ! empty ($info)) { - // 修改密码 - if (isset ( $info ['mobile'] )) { // 手机号修改密码 - $mobile = $info ['mobile']; - $token = $info ['token']; - $area = $info ['area']; - $data = BackData::modifyPasswordByMobile($mobile, $token, $password, $area); + if (Helpers::verifyPassword ($password)) { + if(!empty($info)) { //手机号找回 + // 修改密码 + if (isset ( $info ['mobile'] )) { // 手机号修改密码 + $mobile = $info ['mobile']; + $token = $info ['token']; + $area = $info ['area']; + $data = BackData::modifyPasswordByMobile($mobile, $token, $password, $area); + if ($data ['code'] == 200) { + $this->redirect ( 'resetSuccess' ); + } + } else if (isset ($info ['uid'])) { //其他方式修改密码,跳到找回密码首页 + $this->redirect ( '/index' ); + } + } else { //新版邮箱修改接口 + $data = BackData::modifyPasswordByEmailCode($code, $password); if ($data ['code'] == 200) { $this->redirect ( 'resetSuccess' ); } - } else if (isset ($info ['uid'])) { // 其他方式修改密码 - $uid = $info ['uid']; - $this->redirect ( 'resetSuccess' ); } } // 跳转错误页面 - $this->redirect('/error/index'); + $this->redirect('/index'); } /**