1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-23 20:00:27 +08:00

增加验证码开关

This commit is contained in:
koogua 2022-02-19 18:05:36 +08:00
parent ba512b04c8
commit d697a7bf97
11 changed files with 99 additions and 53 deletions

View File

@ -1,3 +1,7 @@
### [v1.5.1](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.1)(2022-03-17)
- 增加验证码开关
### [v1.5.0](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.0)(2022-02-17)
- 调整对内部人员通知任务类型的前缀

View File

@ -2,10 +2,20 @@
{% block content %}
{% set captcha_display = captcha.enabled == 1 ? 'display:block' : 'display:none' %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.captcha'}) }}">
<fieldset class="layui-elem-field layui-field-title">
<legend>验证码配置</legend>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">开启服务</label>
<div class="layui-input-block">
<input type="radio" name="enabled" value="1" title="是" lay-filter="captcha_enabled" {% if captcha.enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="enabled" value="0" title="否" lay-filter="captcha_enabled" {% if captcha.enabled == 0 %}checked="checked"{% endif %}>
</div>
</div>
<div id="captcha-block" style="{{ captcha_display }}">
<div class="layui-form-item">
<label class="layui-form-label">App Id</label>
<div class="layui-input-block">
@ -18,6 +28,7 @@
<input class="layui-input" type="text" name="secret_key" value="{{ captcha.secret_key }}" lay-verify="required">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
@ -77,6 +88,15 @@
}
);
form.on('radio(captcha_enabled)', function (data) {
var block = $('#captcha-block');
if (data.value === '1') {
block.show();
} else {
block.hide();
}
});
form.on('submit(back_verify)', function (data) {
$.ajax({
type: 'POST',

View File

@ -23,12 +23,13 @@
<input class="layui-input" type="text" name="verify_code" autocomplete="off" placeholder="验证码" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
<button id="cv-emit-btn" 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="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">重置密码</button>
<input id="cv-enabled" type="hidden" value="{{ captcha.enabled }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">

View File

@ -1,3 +1,6 @@
{% set disabled_submit = captcha.enabled == 1 ? 'disabled="disabled"' : '' %}
{% set disabled_class = captcha.enabled == 1 ? 'layui-btn-disabled' : '' %}
<form class="layui-form account-form" method="POST" action="{{ url({'for':'home.account.pwd_login'}) }}">
<div class="layui-form-item">
<label class="layui-icon layui-icon-username"></label>
@ -7,14 +10,16 @@
<label class="layui-icon layui-icon-password"></label>
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required">
</div>
{% if captcha.enabled == 1 %}
<div id="captcha-block" class="layui-form-item">
<div class="layui-input-block">
<button id="captcha-btn" class="layui-btn layui-btn-fluid" type="button" data-app-id="{{ captcha.app_id }}">点击完成验证</button>
</div>
</div>
{% endif %}
<div class="layui-form-item">
<div class="layui-input-block">
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即登录</button>
<button id="submit-btn" class="layui-btn layui-btn-fluid {{ disabled_class }}" {{ disabled_submit }} lay-submit="true" lay-filter="go">立即登录</button>
<input type="hidden" name="return_url" value="{{ return_url }}">
<input id="ticket" type="hidden" name="ticket">
<input id="rand" type="hidden" name="rand">

View File

@ -9,14 +9,15 @@
<input class="layui-input" type="text" name="verify_code" autocomplete="off" placeholder="验证码" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
<button id="cv-emit-btn" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</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-app-id" type="hidden" name="captcha_app_id" value="{{ captcha.app_id }}">
<input id="cv-enabled" type="hidden" value="{{ captcha.enabled }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>

View File

@ -38,13 +38,14 @@
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
<button id="cv-emit-btn" 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="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-enabled" type="hidden" value="{{ captcha.enabled }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">

View File

@ -14,7 +14,7 @@
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
<button id="cv-emit-btn" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
@ -24,6 +24,7 @@
<input type="hidden" name="code" value="{{ request.get('code') }}">
<input type="hidden" name="state" value="{{ request.get('state') }}">
<input type="hidden" name="open_user" value='{{ open_user|json_encode }}'>
<input id="cv-enabled" type="hidden" value="{{ captcha.enabled }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">

View File

@ -28,12 +28,13 @@
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
<button id="cv-emit-btn" 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="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">提交修改</button>
<input id="cv-enabled" type="hidden" value="{{ captcha.enabled }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">

View File

@ -28,12 +28,13 @@
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
<button id="cv-emit-btn" 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="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">提交修改</button>
<input id="cv-enabled" type="hidden" value="{{ captcha.enabled }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">

View File

@ -16,7 +16,7 @@ class AppInfo
protected $link = 'https://koogua.com';
protected $version = '1.5.0';
protected $version = '1.5.';
public function __get($name)
{

View File

@ -5,8 +5,10 @@ layui.use(['jquery', 'util'], function () {
var timeCounting = false;
var $account = $('#cv-account');
var $emit = $('#cv-verify-emit');
var $emit = $('#cv-emit-btn');
var $submit = $('#cv-submit-btn');
if ($('#cv-enabled').val() === '1') {
var captcha = new TencentCaptcha(
$emit[0],
$('#cv-app-id').val(),
@ -14,31 +16,15 @@ layui.use(['jquery', 'util'], function () {
if (res.ret === 0) {
$('#cv-ticket').val(res.ticket);
$('#cv-rand').val(res.randstr);
if (isEmail($account.val()) || isPhone($account.val())) {
var postUrl;
var postData = {
ticket: $('#cv-ticket').val(),
rand: $('#cv-rand').val(),
};
if (isPhone($account.val())) {
postData.phone = $account.val();
postUrl = '/verify/sms/code';
} else if (isEmail($account.val())) {
postData.email = $account.val();
postUrl = '/verify/mail/code';
}
$.ajax({
type: 'POST',
url: postUrl,
data: postData
});
$('#cv-submit-btn').removeClass('layui-btn-disabled').removeAttr('disabled');
$emit.addClass('layui-btn-disabled').attr('disabled', 'disabled');
showCountDown($emit);
}
sendVerifyCode();
}
}
);
} else {
$emit.on('click', function () {
sendVerifyCode();
});
}
$account.on('keyup', function () {
var accountOk;
@ -58,14 +44,39 @@ layui.use(['jquery', 'util'], function () {
}
});
function showCountDown(obj) {
function sendVerifyCode() {
if (isEmail($account.val()) || isPhone($account.val())) {
var postUrl;
var postData = {
ticket: $('#cv-ticket').val(),
rand: $('#cv-rand').val(),
};
if (isPhone($account.val())) {
postData.phone = $account.val();
postUrl = '/verify/sms/code';
} else if (isEmail($account.val())) {
postData.email = $account.val();
postUrl = '/verify/mail/code';
}
$.ajax({
type: 'POST',
url: postUrl,
data: postData,
});
$submit.removeClass('layui-btn-disabled').removeAttr('disabled');
$emit.addClass('layui-btn-disabled').attr('disabled', 'disabled');
showCountDown($emit);
}
}
function showCountDown() {
var serverTime = new Date().getTime();
var endTime = serverTime + 60 * 1000;
util.countdown(endTime, serverTime, function (date, serverTime, timer) {
var left = date[0] * 86400 + date[1] * 3600 + date[2] * 60 + date[3];
obj.text(left + '秒');
$emit.text(left + '秒');
if (left === 0) {
obj.removeClass('layui-btn-disabled').removeAttr('disabled').text('重新发送');
$emit.removeClass('layui-btn-disabled').removeAttr('disabled').text('重新发送');
clearInterval(timer);
timeCounting = false;
}