Back.php 6.8 KB
<?php

use Action\AbstractAction;
use LibModels\Wap\Passport\BackData;
use Hood\Core\Security\AuthCode;
/**
 * 频道选择
 */
class BackController extends AbstractAction
{

    public function emailAction()
    {
        $data = array(
            'backUrl' => '/passport/login/index',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backEmail' => true
        );

        $this->_view->assign('title', 'YOHO!有货');
        $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()
    {
        $email = $this->get('email', '');
        // 获取到邮箱域名
        $pattern = "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
        $domain_name = 'http://mail.'.preg_replace( $pattern ,"$2", $email );

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

        $this->_view->assign('title', 'YOHO!有货');
        $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);

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


    public function mobileAction()
    {
        // 获取地区信息
        $areas = array();
        $areaDatas = $data = BackData::getAreasData();
        if($areaDatas['code'] == 200)
        {
            $areas = $areaDatas['data'];
        }
        // 处理地区信息
        foreach ($areas as &$val) {
            $val['areaCode'] = '+'.$val['area'];
            if($val['area'] === '86')
            {
                $val['selected'] = true;
            }
            unset($val['area']);
        }
        /*// 排序
        uasort($areas, function($a, $b) {
            if($a['id'] === $b['id'])
            {
                return 0;
            }

            return ($a['id'] < $b['id'] ? -1 : 1);
        });*/
    
        $data = array(
            'backUrl' => '/passport/login/index',
            'headerText' => '找回密码',
            'isPassportPage' => true,
            'backMobile' => true,
            'countrys' => $areas,
            'countryCode' => '+86'
        );

        $this->_view->assign('title', 'YOHO!有货');
        $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' => '/passport/back/mobile',
            '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['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' => '/passport/login/index',
            '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);
        }
    }
}