1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-08-05 22:11:40 +08:00

完成登录和重置密码

This commit is contained in:
xiaochong0302 2020-06-03 19:21:04 +08:00
parent 533b0eaad5
commit be8937ddcf
24 changed files with 209 additions and 153 deletions

View File

@ -23,7 +23,7 @@
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-block">
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
<span id="verify-btn" class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide kg-verify-btn"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
<span id="verify-btn" class="kg-verify-btn-ok layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
</div>
</div>
{% endif %}
@ -31,7 +31,8 @@
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button id="submit-btn" class="layui-btn layui-btn-fluid" {% if captcha.enabled %}disabled="disabled"{% endif %} lay-submit="true" lay-filter="go">登录</button>
{% set disabled = captcha.enabled ? 'disabled="disabled"' : '' %}
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">登录</button>
<input type="hidden" name="ticket">
<input type="hidden" name="rand">
</div>
@ -61,8 +62,8 @@
$('input[name=ticket]').val(res.ticket);
$('input[name=rand]').val(res.randstr);
$('#captcha-btn').remove();
$('#submit-btn').removeAttr('disabled');
$('#verify-btn').removeClass('layui-hide');
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
}
}
);

View File

@ -4,6 +4,7 @@ namespace App\Http\Web\Controllers;
use App\Http\Web\Services\Account as AccountService;
use App\Services\Frontend\Account\EmailUpdate as EmailUpdateService;
use App\Services\Frontend\Account\PasswordReset as PasswordResetService;
use App\Services\Frontend\Account\PasswordUpdate as PasswordUpdateService;
use App\Services\Frontend\Account\PhoneUpdate as PhoneUpdateService;
@ -18,6 +19,10 @@ class AccountController extends Controller
*/
public function registerAction()
{
if ($this->authUser->id > 0) {
$this->response->redirect('/');
}
$service = new AccountService();
$captcha = $service->getSectionSettings('captcha');
@ -33,7 +38,18 @@ class AccountController extends Controller
*/
public function doRegisterAction()
{
$service = new AccountService();
$service->register();
$returnUrl = $this->request->getPost('return_url');
$content = [
'location' => $returnUrl ?: '/',
'msg' => '注册成功',
];
return $this->jsonSuccess($content);
}
/**
@ -41,6 +57,10 @@ class AccountController extends Controller
*/
public function loginAction()
{
if ($this->authUser->id > 0) {
$this->response->redirect('/');
}
$service = new AccountService();
$captcha = $service->getSectionSettings('captcha');
@ -60,7 +80,14 @@ class AccountController extends Controller
$service->loginByPassword();
return $this->jsonSuccess();
$returnUrl = $this->request->getPost('return_url');
$content = [
'location' => $returnUrl ?: '/',
'msg' => '登录成功',
];
return $this->jsonSuccess($content);
}
/**
@ -72,7 +99,14 @@ class AccountController extends Controller
$service->loginByVerify();
return $this->jsonSuccess();
$returnUrl = $this->request->getPost('return_url');
$content = [
'location' => $returnUrl ?: '/',
'msg' => '登录成功',
];
return $this->jsonSuccess($content);
}
/**
@ -92,6 +126,10 @@ class AccountController extends Controller
*/
public function forgetPasswordAction()
{
if ($this->authUser->id > 0) {
$this->response->redirect('/');
}
$service = new AccountService();
$captcha = $service->getSectionSettings('captcha');
@ -105,7 +143,18 @@ class AccountController extends Controller
*/
public function resetPasswordAction()
{
$service = new PasswordResetService();
$service->handle();
$loginUrl = $this->url->get(['for' => 'web.account.login']);
$content = [
'location' => $loginUrl,
'msg' => '重置密码成功',
];
return $this->jsonSuccess($content);
}
/**

View File

@ -5,8 +5,6 @@ namespace App\Http\Web\Services;
use App\Repos\User as UserRepo;
use App\Services\Auth as AuthService;
use App\Services\Frontend\Account\Register as RegisterService;
use App\Services\Frontend\Account\RegisterByEmail as RegisterByEmailService;
use App\Services\Frontend\Account\RegisterByPhone as RegisterByPhoneService;
use App\Validators\Account as AccountValidator;
use App\Validators\Captcha as CaptchaValidator;
@ -34,24 +32,8 @@ class Account extends Service
$user = $userRepo->findById($account->id);
$this->auth->saveAuthInfo($user);
}
public function registerByEmail()
{
$service = new RegisterByEmailService();
$user = $service->handle();
$this->auth->saveAuthInfo($user);
}
public function registerByPhone()
{
$service = new RegisterByPhoneService();
$user = $service->handle();
$this->auth->saveAuthInfo($user);
return $user;
}
public function loginByPassword()

View File

@ -8,7 +8,7 @@
</div>
<div class="register-container">
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.reset_pwd'}) }}">
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.reset_pwd'}) }}">
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
<div class="layui-input-block">
@ -23,19 +23,24 @@
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-block">
<div class="layui-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
<div class="layui-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
<span id="cv-verify-btn" class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide verify-btn"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
<span id="cv-verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即重置</button>
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即重置</button>
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>

View File

@ -7,19 +7,25 @@
<a><cite>登录</cite></a>
</div>
<div class="layui-tab layui-tab-brief login-tab">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">密码登录</li>
<li>验证码登录</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('account/login_by_password') }}
</div>
<div class="layui-tab-item">
{{ partial('account/login_by_verify') }}
<div class="login-container module">
<div class="layui-tab layui-tab-brief login-tab">
<ul class="layui-tab-title kg-tab-title">
<li class="layui-this">密码登录</li>
<li>验证码登录</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
{{ partial('account/login_by_password') }}
</div>
<div class="layui-tab-item">
{{ partial('account/login_by_verify') }}
</div>
</div>
</div>
<div class="text-center">
<a class="login-link" href="{{ url({'for':'web.account.register'}) }}">免费注册</a>
<a class="forget-link" href="{{ url({'for':'web.account.forget_pwd'}) }}">忘记密码</a>
</div>
</div>
{% endblock %}

View File

@ -1,4 +1,4 @@
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.pwd_login'}) }}">
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.pwd_login'}) }}">
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
<div class="layui-input-block">
@ -15,15 +15,15 @@
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-block">
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
<span id="verify-btn" class="layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide verify-btn"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
<span id="verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
<input type="hidden" name="return_url" value="{{ return_url }}">
<input type="hidden" name="ticket">
<input type="hidden" name="rand">
<input id="ticket" type="hidden" name="ticket">
<input id="rand" type="hidden" name="rand">
</div>
</div>
</form>

View File

@ -1,4 +1,4 @@
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.verify_login'}) }}">
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.verify_login'}) }}">
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
<div class="layui-input-block">
@ -7,21 +7,26 @@
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-block">
<div class="layui-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
<div class="layui-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-block">
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
<span id="cv-verify-btn" class="verify-btn layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
<span id="cv-verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-fluid layui-btn-disabled layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
<input type="hidden" name="return_url" value="{{ return_url }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>

View File

@ -8,11 +8,11 @@
</div>
<div class="register-container">
<form class="layui-form" method="POST" action="{{ url({'for':'web.account.do_register'}) }}">
<form class="layui-form account-form" method="POST" action="{{ url({'for':'web.account.do_register'}) }}">
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
<input id="cv-account" class="layui-input" type="text" name="account" autocomplete="off" placeholder="手机 / 邮箱" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
@ -23,20 +23,25 @@
</div>
<div class="layui-form-item">
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
<div class="layui-input-block">
<div class="layui-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<span id="captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
<span id="verify-tips" class="btn-verify layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
<div class="layui-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="submit-btn" class="layui-btn layui-btn-fluid" disabled="disabled" lay-submit="true" lay-filter="go">立即注册</button>
<span id="cv-captcha-btn" class="layui-btn layui-btn-primary layui-btn-fluid" data-app-id="{{ captcha.app_id }}">点击完成验证</span>
<span id="cv-verify-btn" class="verify-btn-ok layui-btn layui-btn-primary layui-btn-disabled layui-btn-fluid layui-hide"><i class="layui-icon layui-icon-ok"></i>验证成功</span>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即注册</button>
<input type="hidden" name="return_url" value="{{ return_url }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>
@ -47,6 +52,6 @@
{% block include_js %}
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
{{ js_include('web/js/captcha.js') }}
{{ js_include('web/js/captcha.verify.js') }}
{% endblock %}

View File

@ -28,18 +28,18 @@
</div>
<div class="user layui-layout-right">
{% if auth_user %}
{% if auth_user.id > 0 %}
<ul class="layui-nav">
<li class="layui-nav-item"><a href="{{ url({'for':'web.my.courses'}) }}">消息</a></li>
<li class="layui-nav-item">
<a href="javascript:">{{ auth_user.name }}</a>
<dl class="layui-nav-child">
<dd><a href="{{ url({'for':'web.my.courses'}) }} }}">我的课程</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }} }}">我的收藏</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }} }}">我的咨询</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }} }}">我的订单</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }} }}">个人设置</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }} }}">退出登录</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }}">我的课程</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }}">我的收藏</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }}">我的咨询</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }}">我的订单</a></dd>
<dd><a href="{{ url({'for':'web.my.courses'}) }}">个人设置</a></dd>
<dd><a href="{{ url({'for':'web.account.logout'}) }}">退出登录</a></dd>
</dl>
</li>
</ul>

View File

@ -66,7 +66,7 @@ class Common
public static function phone($str)
{
$pattern = '/^(13[0-9]|15[0-3]|15[5-9]|180|18[5-9])[0-9]{8}$/';
$pattern = '/^1(3|4|5|6|7|9)[0-9]{9}$/';
return preg_match($pattern, $str) ? true : false;
}

View File

@ -15,7 +15,7 @@ class PasswordReset extends FrontendService
$accountValidator = new AccountValidator();
$account = $accountValidator->checkLoginName($post['account']);
$account = $accountValidator->checkAccount($post['account']);
$accountValidator->checkPassword($post['new_password']);

View File

@ -15,7 +15,7 @@ class PasswordResetByEmail extends FrontendService
$accountValidator = new AccountValidator();
$account = $accountValidator->checkAccountByEmail($post['email']);
$account = $accountValidator->checkAccount($post['email']);
$accountValidator->checkPassword($post['new_password']);

View File

@ -15,7 +15,7 @@ class PasswordResetByPhone extends FrontendService
$accountValidator = new AccountValidator();
$account = $accountValidator->checkAccountByPhone($post['phone']);
$account = $accountValidator->checkAccount($post['phone']);
$accountValidator->checkPassword($post['new_password']);

View File

@ -21,6 +21,8 @@ class Register extends FrontendService
$accountValidator = new AccountValidator();
$accountValidator->checkLoginName($post['account']);
$data = [];
if (CommonValidator::phone($post['account'])) {

View File

@ -34,9 +34,9 @@ class ChapterInfo extends FrontendService
public function handle($id)
{
$chapter = $this->checkChapter($id);
$chapter = $this->checkChapterCache($id);
$course = $this->checkCourse($chapter->course_id);
$course = $this->checkCourseCache($chapter->course_id);
$this->course = $course;

View File

@ -35,17 +35,7 @@ class ChapterList extends FrontendService
return [];
}
if ($user->id == 0) {
foreach ($chapters as &$chapter) {
foreach ($chapter['children'] as &$lesson) {
$lesson['me'] = [
'owned' => $this->ownedCourse || $lesson['free'] ? 1 : 0,
'progress' => 0,
'duration' => 0,
];
}
}
} else {
if ($user->id > 0 && $this->courseUser) {
$mappings = $this->getLearningMappings($course->id, $user->id, $this->courseUser->plan_id);
foreach ($chapters as &$chapter) {
foreach ($chapter['children'] as &$lesson) {
@ -56,6 +46,16 @@ class ChapterList extends FrontendService
];
}
}
} else {
foreach ($chapters as &$chapter) {
foreach ($chapter['children'] as &$lesson) {
$lesson['me'] = [
'owned' => $this->ownedCourse || $lesson['free'] ? 1 : 0,
'progress' => 0,
'duration' => 0,
];
}
}
}
return $chapters;

View File

@ -22,7 +22,7 @@ class Verify extends MailerService
$minutes = 5;
$code = $verify->getSmsCode($email, 60 * $minutes);
$code = $verify->getEmailCode($email, 60 * $minutes);
$subject = '邮件验证码';

View File

@ -15,10 +15,10 @@ class Account extends Validator
public function checkAccount($name)
{
$accountRepo = new AccountRepo();
$account = null;
$accountRepo = new AccountRepo();
if (CommonValidator::email($name)) {
$account = $accountRepo->findByEmail($name);
} elseif (CommonValidator::phone($name)) {
@ -34,38 +34,14 @@ class Account extends Validator
return $account;
}
public function checkAccountByEmail($email)
{
$accountRepo = new AccountRepo();
$account = $accountRepo->findByEmail($email);
if (!$account) {
throw new BadRequestException('account.not_found');
}
return $account;
}
public function checkAccountByPhone($phone)
{
$accountRepo = new AccountRepo();
$account = $accountRepo->findByPhone($phone);
if (!$account) {
throw new BadRequestException('account.not_found');
}
return $account;
}
public function checkLoginName($name)
{
$isPhone = CommonValidator::phone($name);
$isEmail = CommonValidator::email($name);
if (!$isPhone && !$isEmail) {
$loginNameOk = $isPhone || $isEmail;
if (!$loginNameOk) {
throw new BadRequestException('account.invalid_login_name');
}
}

View File

@ -9,7 +9,7 @@ use Phalcon\Mvc\User\Component;
class Validator extends Component
{
public function checkAuthUser(array $authUser)
public function checkAuthUser($authUser)
{
if (empty($authUser['id'])) {
throw new UnauthorizedException('sys.unauthorized');

View File

@ -27,12 +27,14 @@ class Verify extends Validator
return $email;
}
public function checkCode($name, $code)
public function checkCode($identity, $code)
{
if (CommonValidator::email($name)) {
$this->checkEmailCode($name, $code);
} elseif (CommonValidator::phone($name)) {
$this->checkSmsCode($name, $code);
if (CommonValidator::email($identity)) {
$this->checkEmailCode($identity, $code);
} elseif (CommonValidator::phone($identity)) {
$this->checkSmsCode($identity, $code);
} else {
throw new BadRequestException('verify.unsupported_identity');
}
}

View File

@ -42,7 +42,7 @@
margin-right: 10px;
}
.kg-btn-verify {
.kg-verify-btn-ok {
color: green;
}

View File

@ -419,7 +419,7 @@ body {
}
.package-item {
margin-bottom: 25px;
margin-bottom: 20px;
border-bottom: 1px dashed #ccc;
}
@ -469,7 +469,7 @@ body {
.package-course-list {
width: 580px;
height: 170px;
height: 180px;
overflow-x: auto;
white-space: nowrap;
}
@ -484,9 +484,11 @@ body {
.package-course-card {
width: 175px;
height: 160px;
display: inline-block;
margin-right: 8px;
vertical-align: top;
box-shadow: 0 4px 8px 0 rgba(7, 17, 27, 0.1);
}
.package-course-card .cover {
@ -502,6 +504,8 @@ body {
.package-course-card .title {
font-size: 12px;
padding: 0 3px;
text-align: center;
white-space: normal;
}
@ -785,28 +789,30 @@ body {
text-align: center;
}
.verify-tips-btn {
.verify-btn-ok {
color: green;
}
.register-container {
padding: 40px 30px;
background-color: #fff;
.account-form {
width: 540px;
}
.register-container .layui-form {
width: 50%;
.account-form .verify-input-inline {
width: 308px;
}
.account-form .verify-btn-inline {
margin-right: 0;
}
.login-container {
}
.login-tab {
padding: 20px 30px;
background-color: #fff;
margin: 0;
}
.login-tab .layui-tab-content {
padding-top: 30px;
}
.login-tab .layui-form {
width: 50%;
}

View File

@ -5,11 +5,11 @@ var captcha = new TencentCaptcha(
$('#captcha-btn').attr('data-app-id'),
function (res) {
if (res.ret === 0) {
$('input[name=ticket]').val(res.ticket);
$('input[name=rand]').val(res.randstr);
$('#ticket').val(res.ticket);
$('#rand').val(res.randstr);
$('#captcha-btn').remove();
$('#submit-btn').removeAttr('disabled');
$('#verify-btn').removeClass('layui-hide');
$('#submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
}
}
);

View File

@ -5,24 +5,41 @@ var captcha = new TencentCaptcha(
$('#cv-captcha-btn').attr('data-app-id'),
function (res) {
if (res.ret === 0) {
$.ajax({
type: 'POST',
url: '/verify/code',
data: {
account: $('#cv-account').val(),
ticket: res.ticket,
rand: res.randstr
},
success: function (res) {
var icon = res.code === 0 ? 1 : 2;
if (res.msg) {
layer.msg(res.msg, {icon: icon});
}
}
});
$('#cv-ticket').val(res.ticket);
$('#cv-rand').val(res.randstr);
$('#cv-captcha-btn').remove();
$('#cv-submit-btn').removeAttr('disabled');
$('#cv-verify-btn').removeClass('layui-hide');
$('#cv-verify-emit').removeClass('layui-btn-disabled').removeAttr('disabled');
}
}
);
);
$('#cv-verify-emit').on('click', function () {
var account = $('#cv-account').val();
var regEmail = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
var regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/;
var isEmail = regEmail.test(account);
var isPhone = regPhone.test(account);
if (isEmail || isPhone) {
var postUrl = null;
var postData = {
ticket: $('#cv-ticket').val(),
rand: $('#cv-rand').val(),
};
if (isPhone) {
postData.phone = account;
postUrl = '/verify/sms/code';
} else if (isEmail) {
postData.email = account;
postUrl = '/verify/email/code';
}
$.post(postUrl, postData, function (res) {
if (res.code === 0) {
$('#cv-submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
layer.msg('发送验证码成功', {icon: 1});
} else {
layer.msg('发送验证码失败', {icon: 2});
}
});
}
});