...
|
...
|
@@ -6,225 +6,225 @@ use Plugin\Helpers; |
|
|
use LibModels\Wap\Passport\BackData;
|
|
|
use Plugin\AuthCode;
|
|
|
class BackController extends WebAction {
|
|
|
|
|
|
/**
|
|
|
* 找回密码
|
|
|
*/
|
|
|
public function indexAction() {
|
|
|
$banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader(false),
|
|
|
'backPage' => true,
|
|
|
'back' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countryCode' => '86',
|
|
|
'countryName' => '中国',
|
|
|
'captchaUrl' => '/passport/images?t=1449799445',
|
|
|
'countryList' => RegData::getAreasData()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display ( 'index', $data );
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 校验验证码
|
|
|
*/
|
|
|
public function authcodeAction() {
|
|
|
$phoneNum = $this->post ('phoneNum', '');
|
|
|
$area = intval ($this->post( 'area', '86' ));
|
|
|
$verifyCode = $this->post ('verifyCode', '');
|
|
|
$data = array('code' => 400, 'message' =>'验证失败');
|
|
|
if ((Helpers::verifyEmail($phoneNum) || Helpers::verifyMobile($phoneNum))
|
|
|
&& PassportModel::verifyCode($verifyCode)) {
|
|
|
$data['code'] = 200;
|
|
|
$data['message'] = '验证成功';
|
|
|
}
|
|
|
echo $this->echoJson($data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 邮箱
|
|
|
*/
|
|
|
public function emailAction() {
|
|
|
$phoneNum = $this->post ('phoneNum', '');
|
|
|
$area = intval ($this->post('area', '86'));
|
|
|
$verifyCode = $this->post('verifyCode', '');
|
|
|
if (Helpers::verifyEmail($phoneNum)) { // 验证邮箱
|
|
|
$email = $phoneNum;
|
|
|
$data = BackData::sendCodeToEmail($email);
|
|
|
if ($data ['code'] == 200) {
|
|
|
$this->setSession('email', $email);
|
|
|
$this->redirect ('sendemail');
|
|
|
} else {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
|
|
|
} else if (Helpers::verifyMobile($phoneNum)) { // 验证手机号
|
|
|
$mobile = $phoneNum;
|
|
|
$data = BackData::sendCodeToMobile($mobile, $area);
|
|
|
if ($data['code'] == 200) {
|
|
|
$this->setSession ('mobile', $mobile );
|
|
|
$this->setSession ('area', $area );
|
|
|
$this->setSession ('verifyCode', $verifyCode );
|
|
|
$this->redirect ('verification');
|
|
|
} else {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送邮件页面
|
|
|
*/
|
|
|
public function sendemailAction() {
|
|
|
$email = $this->getSession ('email');
|
|
|
if (empty ( $email )) {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
$banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader(false),
|
|
|
'sendEmail' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countrys' => array ()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display('send-email', $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 重置密码页面
|
|
|
*/
|
|
|
public function backcodeAction() {
|
|
|
$code = $this->get('code');
|
|
|
$info = $this->checkCode($code);
|
|
|
if (empty ( $info )) {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
$banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader(false),
|
|
|
'resetPage' => true,
|
|
|
'resetPwd' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countrys' => array(),
|
|
|
'code' => $code
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display('reset-pwd', $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新密码接口
|
|
|
*/
|
|
|
public function updateAction() {
|
|
|
$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 ($data ['code'] == 200) {
|
|
|
$this->redirect ( 'resetSuccess' );
|
|
|
}
|
|
|
} else if (isset ($info ['uid'])) { // 其他方式修改密码
|
|
|
$uid = $info ['uid'];
|
|
|
$this->redirect ( 'resetSuccess' );
|
|
|
}
|
|
|
}
|
|
|
// 跳转错误页面
|
|
|
$this->redirect('/error/index');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 重置密码成功
|
|
|
*/
|
|
|
public function resetSuccessAction() {
|
|
|
$banner = PassportModel::getLeftBanner ( PassportModel::BACK_LFFT_BANNER_CODE );
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader ( false ),
|
|
|
'resetSuccess' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countrys' => array ()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display ( 'reset-success', $data );
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 手机验证页面
|
|
|
*/
|
|
|
public function verificationAction() {
|
|
|
$mobile = $this->getSession ('mobile');
|
|
|
$area = $this->getSession ('area');
|
|
|
$verifyCode = $this->getSession ('verifyCode');
|
|
|
if (empty ($mobile)) {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
$banner = PassportModel::getLeftBanner (PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader ( false ),
|
|
|
'vertificationPage' => true,
|
|
|
'verification' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'mobile' => $mobile,
|
|
|
'area' => $area,
|
|
|
'verifyCode' => $verifyCode,
|
|
|
'countrys' => array ()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display ('verification', $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 手机找回密码验证
|
|
|
*/
|
|
|
public function backmobileAction() {
|
|
|
$mobile = $this->post ( 'mobile' );
|
|
|
$area = $this->post ( 'area' );
|
|
|
$verifyCode = $this->post ( 'verifyCode' );
|
|
|
$code = $this->post ( 'code' ); // code
|
|
|
if ($this->getSession ( 'mobile' ) == $mobile && $this->getSession ( 'area' ) == $area) {
|
|
|
$result = BackData::validateMobileCode ( $mobile, $code, $area );
|
|
|
if ($result ['code'] == 200) {
|
|
|
$str = json_encode ( array (
|
|
|
'mobile' => $mobile,
|
|
|
'area' => $area,
|
|
|
'token' => $result ['data'] ['token'],
|
|
|
'create_time' => time ()
|
|
|
) );
|
|
|
$code = AuthCode::encode ( $str, PassportModel::BACK_FIND_SECRET_KEY );
|
|
|
$url = '/passport/back/backcode?code=' . base64_encode ( $code );
|
|
|
$this->redirect ( SITE_MAIN . $url );
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
//出错直接跳到找回密码页
|
|
|
$this->redirect ('/passport/back/index');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 检查code
|
|
|
*
|
|
|
* @param string $code
|
|
|
* @return boolean
|
|
|
*/
|
|
|
private function checkCode($code) {
|
|
|
$code = base64_decode ( $code );
|
|
|
$info = json_decode ( AuthCode::decode ( $code, PassportModel::BACK_FIND_SECRET_KEY ), true );
|
|
|
if ($info ['create_time'] < 1 || (time () - $info ['create_time']) > 86400) {
|
|
|
return array ();
|
|
|
}
|
|
|
return $info;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 找回密码
|
|
|
*/
|
|
|
public function indexAction() {
|
|
|
$banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader(false),
|
|
|
'backPage' => true,
|
|
|
'back' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countryCode' => '86',
|
|
|
'countryName' => '中国',
|
|
|
'captchaUrl' => '/passport/images?t=1449799445',
|
|
|
'countryList' => RegData::getAreasData()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display ( 'index', $data );
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 校验验证码
|
|
|
*/
|
|
|
public function authcodeAction() {
|
|
|
$phoneNum = $this->post ('phoneNum', '');
|
|
|
$area = intval ($this->post( 'area', '86' ));
|
|
|
$verifyCode = $this->post ('verifyCode', '');
|
|
|
$data = array('code' => 400, 'message' =>'验证失败');
|
|
|
if ((Helpers::verifyEmail($phoneNum) || Helpers::verifyMobile($phoneNum))
|
|
|
&& PassportModel::verifyCode($verifyCode)) {
|
|
|
$data['code'] = 200;
|
|
|
$data['message'] = '验证成功';
|
|
|
}
|
|
|
echo $this->echoJson($data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 邮箱
|
|
|
*/
|
|
|
public function emailAction() {
|
|
|
$phoneNum = $this->post ('phoneNum', '');
|
|
|
$area = intval ($this->post('area', '86'));
|
|
|
$verifyCode = $this->post('verifyCode', '');
|
|
|
if (Helpers::verifyEmail($phoneNum)) { // 验证邮箱
|
|
|
$email = $phoneNum;
|
|
|
$data = BackData::sendCodeToEmail($email);
|
|
|
if ($data ['code'] == 200) {
|
|
|
$this->setSession('email', $email);
|
|
|
$this->redirect ('sendemail');
|
|
|
} else {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
|
|
|
} else if (Helpers::verifyMobile($phoneNum)) { // 验证手机号
|
|
|
$mobile = $phoneNum;
|
|
|
$data = BackData::sendCodeToMobile($mobile, $area);
|
|
|
if ($data['code'] == 200) {
|
|
|
$this->setSession ('mobile', $mobile );
|
|
|
$this->setSession ('area', $area );
|
|
|
$this->setSession ('verifyCode', $verifyCode );
|
|
|
$this->redirect ('verification');
|
|
|
} else {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送邮件页面
|
|
|
*/
|
|
|
public function sendemailAction() {
|
|
|
$email = $this->getSession ('email');
|
|
|
if (empty ( $email )) {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
$banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader(false),
|
|
|
'sendEmail' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countrys' => array ()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display('send-email', $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 重置密码页面
|
|
|
*/
|
|
|
public function backcodeAction() {
|
|
|
$code = $this->get('code');
|
|
|
$info = $this->checkCode($code);
|
|
|
if (empty ( $info )) {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
$banner = PassportModel::getLeftBanner(PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader(false),
|
|
|
'resetPage' => true,
|
|
|
'resetPwd' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countrys' => array(),
|
|
|
'code' => $code
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display('reset-pwd', $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新密码接口
|
|
|
*/
|
|
|
public function updateAction() {
|
|
|
$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 ($data ['code'] == 200) {
|
|
|
$this->redirect ( 'resetSuccess' );
|
|
|
}
|
|
|
} else if (isset ($info ['uid'])) { // 其他方式修改密码
|
|
|
$uid = $info ['uid'];
|
|
|
$this->redirect ( 'resetSuccess' );
|
|
|
}
|
|
|
}
|
|
|
// 跳转错误页面
|
|
|
$this->redirect('/error/index');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 重置密码成功
|
|
|
*/
|
|
|
public function resetSuccessAction() {
|
|
|
$banner = PassportModel::getLeftBanner ( PassportModel::BACK_LFFT_BANNER_CODE );
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader ( false ),
|
|
|
'resetSuccess' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'countrys' => array ()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display ( 'reset-success', $data );
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 手机验证页面
|
|
|
*/
|
|
|
public function verificationAction() {
|
|
|
$mobile = $this->getSession ('mobile');
|
|
|
$area = $this->getSession ('area');
|
|
|
$verifyCode = $this->getSession ('verifyCode');
|
|
|
if (empty ($mobile)) {
|
|
|
$this->redirect ('index');
|
|
|
}
|
|
|
$banner = PassportModel::getLeftBanner (PassportModel::BACK_LFFT_BANNER_CODE);
|
|
|
$data = array (
|
|
|
'simpleHeader' => PassportModel::getSimpleHeader ( false ),
|
|
|
'vertificationPage' => true,
|
|
|
'verification' => array (
|
|
|
'coverHref' => $banner ['url'],
|
|
|
'coverImg' => $banner ['img'],
|
|
|
'mobile' => $mobile,
|
|
|
'area' => $area,
|
|
|
'verifyCode' => $verifyCode,
|
|
|
'countrys' => array ()
|
|
|
)
|
|
|
);
|
|
|
$this->_view->display ('verification', $data);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 手机找回密码验证
|
|
|
*/
|
|
|
public function backmobileAction() {
|
|
|
$mobile = $this->post ( 'mobile' );
|
|
|
$area = $this->post ( 'area' );
|
|
|
$verifyCode = $this->post ( 'verifyCode' );
|
|
|
$code = $this->post ( 'code' ); // code
|
|
|
if ($this->getSession ( 'mobile' ) == $mobile && $this->getSession ( 'area' ) == $area) {
|
|
|
$result = BackData::validateMobileCode ( $mobile, $code, $area );
|
|
|
if ($result ['code'] == 200) {
|
|
|
$str = json_encode ( array (
|
|
|
'mobile' => $mobile,
|
|
|
'area' => $area,
|
|
|
'token' => $result ['data'] ['token'],
|
|
|
'create_time' => time ()
|
|
|
) );
|
|
|
$code = AuthCode::encode ( $str, PassportModel::BACK_FIND_SECRET_KEY );
|
|
|
$url = '/passport/back/backcode?code=' . base64_encode ( $code );
|
|
|
$this->redirect ( SITE_MAIN . $url );
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
//出错直接跳到找回密码页
|
|
|
$this->redirect ('/passport/back/index');
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 检查code
|
|
|
*
|
|
|
* @param string $code
|
|
|
* @return boolean
|
|
|
*/
|
|
|
private function checkCode($code) {
|
|
|
$code = base64_decode ( $code );
|
|
|
$info = json_decode ( AuthCode::decode ( $code, PassportModel::BACK_FIND_SECRET_KEY ), true );
|
|
|
if ($info ['create_time'] < 1 || (time () - $info ['create_time']) > 86400) {
|
|
|
return array ();
|
|
|
}
|
|
|
return $info;
|
|
|
}
|
|
|
|
|
|
} |
|
|
\ No newline at end of file |
...
|
...
|
|