Back.php 6.52 KB
<?php

use Action\AbstractAction;
use LibModels\Wap\Passport\BackData;
use LibModels\Wap\Passport\RegData;

/**
 * 频道选择
 */
class BackController extends AbstractAction
{

    public function emailAction()
    {
        $this->setTitle('找回密码-通过邮箱');
        
        $data = array(
            'backUrl' => '/signin.html',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backEmail' => true
        );

        // 生成HTML (emailback.html)
        $this->_view->html('emailback');
        $this->_view->display('email', $data);
    }

    /**
     * 发送邮箱验证码
     */
    public function sendemailAction()
    {
        if($this->isAjax())
        {
            $email = $this->post('email', '');

            // 发送邮箱验证码
            $result = BackData::sendCodeToEmail($email);
            if($result['code'] === 200)
            {
                $result['data'] = '/passport/back/success?email='.$email;
            }

            $this->echoJson($result);
        }
    }

    /**
     * 重新发送邮箱验证码
     */
    public function resendemailAction()
    {
        if($this->isAjax())
        {
            $email = $this->get('email', '');

            // 发送邮箱验证码
            $result = BackData::sendCodeToEmail($email);

            $this->echoJson($result);
        }
    }

    public function successAction()
    {
        $this->setTitle('找回密码-通过邮箱');
        
        $email = $this->get('email', '');
        // 获取到邮箱域名
        list($name, $domain) = explode('@', $email);
        $domain_name = 'http://' . (($domain == 'gmail.com') ? 'mail.google.com' : 'mail.' . $domain);

        $data = array(
            'backUrl' => 'emailback.html',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backEmailSuccess' => true,
            'goEmail' => $domain_name,
            'resendUrl' => '/passport/back/resendemail?email='.$email
        );

        $this->_view->display('email-success', $data);
    }

    /**
     * 根据邮箱修改密码
     * 
     * @return array 根据邮箱修改密码的结果
     */
    public function passwordByEmailAction()
    {
        if($this->isAjax())
        {
            $pwd = $this->post('password', '');
            $code = $this->post('code', '');

            $data = BackData::modifyPasswordByEmail($pwd, $code);

            $result = array('code'=>200);
            if(strpos($data, 'history.back') !== false)
            {
                $result['code'] = 400;
                $result['message'] = '修改失败';
            }

            $this->echoJson($result);// 前端不需要判断结果
        }
    }


    public function mobileAction()
    {
        $this->setTitle('找回密码-通过手机号');
        
        $data = array(
            'backUrl' => '/signin.html',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backMobile' => true,
            'countrys' => RegData::getAreasData(),
            'countryCode' => '+86'
        );

        // 生成HTML (mobileback.html)
        $this->_view->html('mobileback.html');
        
        $this->_view->display('mobile', $data);
    }

    /**
     * 发送手机验证码
     */
    public function sendcodeAction()
    {
        if($this->isAjax())
        {
            $phoneNum = $this->post('phoneNum', '');
            $areaCode = $this->post('areaCode', 86);

            // 发送手机验证码
            $result = BackData::sendCodeToMobile($phoneNum, $areaCode);
            if($result['code'] === 200)
            {
                $result['data'] = '/passport/back/mobilecode?phoneNum='.$phoneNum.'&areaCode='.$areaCode;
            }

            $this->echoJson($result);
        }
    }

    /**
     * 校验验证码页面
     */
    public function mobilecodeAction()
    {
        $phoneNum = $this->get('phoneNum', '');
        $areaCode = $this->get('areaCode', 86);
        $areaCode = '+'.$areaCode;

        $data = array(
            'backUrl' => '/mobileback.html',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backCode' => true,
            'areaCode' => $areaCode,
            'phoneNum' => $phoneNum
        );

        $this->_view->assign('title', 'YOHO!有货');
        $this->_view->display('mobile-code', $data);
    }

    /**
     * 校验手机验证码
     * 
     * @return array 校验手机验证码的结果(token)
     */
    public function verifycodeAction()
    {
        if($this->isAjax())
        {
            $phoneNum = $this->post('phoneNum', '');
            $code = $this->post('code', '');
            $areaCode = $this->post('areaCode', 86);

            // 校验手机验证码
            $result = BackData::validateMobileCode($phoneNum, $code, $areaCode);
            if($result['code'] === 200)
            {
                $result['data'] = '/passport/back/password?phoneNum='.$phoneNum.'&token='.$result['data']['token'].'&areaCode='.$areaCode;
            }

            $this->echoJson($result);
        }
    }

    public function passwordAction()
    {
        $phoneNum = $this->get('phoneNum', '');
        // 手机验证令牌
        $token = $this->get('token', '');
        $areaCode = $this->get('areaCode', 86);

        // 邮箱验证码
        $code = $this->get('code', '');
        
        $data = array(
            'backUrl' => '/signin.html',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backNewPwd' => true,
            'phoneNum' => $phoneNum,
            'token' => $token,
            'areaCode' => $areaCode,
            'code' => $code
        );

        $this->_view->assign('title', 'YOHO!有货');
        $this->_view->display('new-password', $data);
    }

    /**
     * 根据手机验证码修改密码
     * 
     * @return array 根据手机验证码修改密码的结果
     */
    public function passwordByMobileAction()
    {
        if($this->isAjax())
        {
            $phoneNum = $this->post('phoneNum', '');
            $token = $this->post('token', '');
            $newpwd = $this->post('password', '');
            $areaCode = $this->post('areaCode', 86);

            // 根据手机验证码修改密码
            $result = BackData::modifyPasswordByMobile($phoneNum, $token, $newpwd, $areaCode);
            if($result['code'] === 200)
            {
                $result['data'] = '/';
            }

            $this->echoJson($result);
        }
    }
}