feat: balance change

This commit is contained in:
hashbro
2026-08-29 23:16:57 +08:00
parent e9192d5720
commit 3e87a44de3
19 changed files with 808 additions and 36 deletions
@@ -6,19 +6,30 @@
<div class="layui-card">
<div class="layui-card-header">谷歌验证(Google Authenticator)</div>
<div class="layui-card-body">
<p style="margin-bottom:16px;">
当前状态:
@if($enabled)
<span style="color:#16b777;">已开启</span>
@elseif($bound)
<span style="color:#ffb800;">已绑定未开启</span>
<p style="margin-bottom:8px;">
绑定状态:
@if($bound)
<span style="color:#16b777;">已绑定</span>
@else
<span style="color:#999;">未绑定</span>
@endif
</p>
<p style="margin-bottom:16px;">
登录验证:
@if($enabled)
<span style="color:#16b777;">已开启(登录必须填验证码)</span>
@elseif($bound)
<span style="color:#ffb800;">未开启(登录不校验,查看助记词仍需验证)</span>
@else
<span style="color:#999;">未开启</span>
@endif
</p>
<p class="layui-word-aux" style="margin-bottom:16px;">
绑定后可以关闭登录验证。超级管理员查看助记词明文必须使用谷歌验证,与登录开关无关。
</p>
@if(!$bound)
<form class="layui-form" lay-filter="LAY-ga-prepare" style="max-width:480px;">
<form class="layui-form" lay-filter="LAY-ga-prepare" style="max-width:520px;">
<div class="layui-form-item">
<label class="layui-form-label">登录密码</label>
<div class="layui-input-block">
@@ -32,7 +43,7 @@
</div>
</form>
<div id="LAY-ga-bind-box" style="display:none;max-width:480px;margin-top:24px;">
<div id="LAY-ga-bind-box" style="display:none;max-width:520px;margin-top:24px;">
<div id="LAY-ga-qr" style="margin-bottom:12px;"></div>
<p style="margin-bottom:12px;">密钥:<code id="LAY-ga-secret"></code></p>
<form class="layui-form" lay-filter="LAY-ga-bind">
@@ -43,6 +54,13 @@
<input type="text" name="GAKey" required lay-verify="required" class="layui-input" inputmode="numeric" autocomplete="one-time-code" placeholder="扫码后输入 6 位验证码">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">登录验证</label>
<div class="layui-input-block">
<input type="checkbox" name="login_verify" value="1" title="登录时校验谷歌验证码">
<div class="layui-form-mid layui-word-aux">可不勾选。不勾选则登录不校验,之后也可再开。</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="LAY-ga-bind">确认绑定</button>
@@ -51,7 +69,7 @@
</form>
</div>
@else
<form class="layui-form" style="max-width:480px;">
<form class="layui-form" style="max-width:520px;">
<div class="layui-form-item">
<label class="layui-form-label">登录密码</label>
<div class="layui-input-block">
@@ -61,15 +79,15 @@
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<div class="layui-input-block">
<input type="text" name="GACode" id="LAY-ga-code" class="layui-input" inputmode="numeric" autocomplete="one-time-code" placeholder="关闭/解绑时需要">
<input type="text" name="GACode" id="LAY-ga-code" class="layui-input" inputmode="numeric" autocomplete="one-time-code" placeholder="开关登录验证 / 解绑都需要">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
@if($enabled)
<button type="button" class="layui-btn layui-btn-warm" id="LAY-ga-close">关闭验证</button>
<button type="button" class="layui-btn layui-btn-warm" id="LAY-ga-close">关闭登录验证</button>
@else
<button type="button" class="layui-btn" id="LAY-ga-open">开启验证</button>
<button type="button" class="layui-btn" id="LAY-ga-open">开启登录验证</button>
@endif
<button type="button" class="layui-btn layui-btn-danger" id="LAY-ga-unbind">解除绑定</button>
</div>
@@ -101,6 +119,7 @@ layui.use(['form', 'layer'], function () {
$('#LAY-ga-secret').text(res.secret || '');
$('#LAY-ga-secret-input').val(res.secret || '');
$('#LAY-ga-bind-box').show();
form.render('checkbox');
},
error: function (xhr) {
layer.msg((xhr.responseJSON && (xhr.responseJSON.message || xhr.responseJSON.msg)) || '请求失败', { icon: 2 });
@@ -110,10 +129,12 @@ layui.use(['form', 'layer'], function () {
});
form.on('submit(LAY-ga-bind)', function (data) {
var payload = Object.assign({}, data.field, { _token: token });
payload.login_verify = $('input[name=login_verify]').is(':checked') ? 1 : 0;
$.ajax({
url: @json(route('admin.security.google2fa.bind')),
method: 'POST',
data: Object.assign({}, data.field, { _token: token }),
data: payload,
success: function (res) {
layer.msg(res.msg || '', { icon: res.code === 0 ? 1 : 2 }, function () {
if (res.code === 0) location.reload();
@@ -151,7 +172,7 @@ layui.use(['form', 'layer'], function () {
$('#LAY-ga-close').on('click', function () { toggle(0); });
$('#LAY-ga-unbind').on('click', function () {
layer.confirm('确定解除谷歌验证绑定?', function (index) {
layer.confirm('确定解除谷歌验证绑定?解除后无法查看助记词明文。', function (index) {
$.ajax({
url: @json(route('admin.security.google2fa.unbind')),
method: 'POST',