dnsmgr/app/view/auth/login.html
2025-07-02 13:42:13 +08:00

178 lines
8.5 KiB
HTML
Executable File

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>管理中心登录 | 聚合DNS管理系统</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<link rel="stylesheet" href="{$cdnpublic}twitter-bootstrap/3.4.1/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="{$cdnpublic}animate.css/3.5.2/animate.min.css" type="text/css" />
<link rel="stylesheet" href="{$cdnpublic}font-awesome/4.7.0/css/font-awesome.min.css" type="text/css" />
<link rel="stylesheet" href="{$cdnpublic}simple-line-icons/2.4.1/css/simple-line-icons.min.css" type="text/css" />
<link rel="stylesheet" href="/static/css/font.css" type="text/css" />
<link rel="stylesheet" href="/static/css/app.css" type="text/css" />
<!--[if lt IE 9]>
<script src="{$cdnpublic}html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="{$cdnpublic}respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>input:-webkit-autofill{-webkit-box-shadow:0 0 0px 1000px white inset;-webkit-text-fill-color:#333;}</style>
</head>
<body>
<div class="modal inmodal fade" id="modal-findpwd" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">关闭</span>
</button>
<h4 class="modal-title">忘记密码</h4>
</div>
<div class="modal-body">
<strong>重置密码</strong>
<p>进入网站根目录,执行命令:<br/><code>php think reset pwd 用户名 密码</code></p>
<strong>关闭TOTP</strong>
<p>进入网站根目录,执行命令:<br/><code>php think reset totp 用户名</code></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
<div class="app app-header-fixed ">
<div class="container w-xxl w-auto-xs" ng-controller="SigninFormController" ng-init="app.settings.container = false;">
<span class="navbar-brand block m-t">聚合DNS管理系统</span>
<div class="m-b-lg">
<div class="wrapper text-center">
<strong>管理中心登录</strong>
</div>
<div class="text-danger wrapper text-center" ng-show="authError"></div>
<form action="" class="form-validation" id="login-form" onsubmit="return doLogin()">
<div class="tab-content">
<div class="tab-pane active">
<div class="list-group list-group-sm swaplogin">
<div class="list-group-item">
<input type="text" class="form-control no-border" placeholder="用户名" name="username" required="required"/>
</div>
<div class="list-group-item">
<input type="password" class="form-control no-border" placeholder="密码" name="password" required="required"/>
</div>
{if config_get('vcode', '1')=='1'}
<div class="list-group-item">
<div class="input-group">
<input type="text" name="code" class="form-control no-border" placeholder="输入验证码" autocomplete="off" required="required"/>
<span class="input-group-addon" style="padding: 0">
<img id="verifycode" src="/verifycode" height="33" onclick="this.src='/verifycode?r='+Math.random();" title="点击更换验证码">
</span>
</div>
</div>
{/if}
</div>
<button type="submit" class="btn btn-lg btn-primary btn-block" id="submit">立即登录</button>
</div>
</div>
<div class="line line-dashed"></div>
<div class="form-group">
<a href="javascript:findpwd()" class="btn btn-info btn-rounded"><i class="fa fa-unlock"></i>&nbsp;找回密码</a>
</div>
</form>
<form action="" class="form-validation" id="totp-form" onsubmit="return doTotp()" style="display:none;">
<div class="tab-content">
<div class="tab-pane active">
<div class="list-group list-group-sm swaplogin">
<div class="list-group-item">
<input type="number" class="form-control no-border" placeholder="输入动态口令" name="totp_code" id="totp_code" autocomplete="off" required="required"/>
</div>
</div>
<button type="submit" class="btn btn-lg btn-primary btn-block" id="submit">立即登录</button>
</div>
</div>
<div class="line line-dashed"></div>
<div class="form-group">
<a href="javascript:findpwd()" class="btn btn-info btn-rounded"><i class="fa fa-unlock"></i>&nbsp;找回密码</a>
</div>
</form>
</div>
<div class="text-center">
<p>
<small class="text-muted"><a href="/">聚合DNS管理系统</a><br>&copy; 2016~2024</small>
</p>
</div>
</div>
</div>
<script src="{$cdnpublic}jquery/3.4.1/jquery.min.js"></script>
<script src="{$cdnpublic}twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script src="{$cdnpublic}layer/3.1.1/layer.min.js"></script>
<script>
function doLogin(){
var username = $("input[name='username']").val();
var password = $("input[name='password']").val();
var code = $("input[name='code']").val();
if(username == ''){
layer.msg('用户名不能为空', {icon: 2});
return false;
}
if(password == ''){
layer.msg('密码不能为空', {icon: 2});
return false;
}
if(code == ''){
layer.msg('验证码不能为空', {icon: 2});
return false;
}
var ii = layer.load(2);
$.ajax({
type: "POST",
url: "/login",
data: $("#login-form").serialize(),
dataType: 'json',
success: function(data){
layer.close(ii);
if(data.code == 0){
layer.msg('登录成功,正在跳转到首页', {icon: 1,shade: 0.01,time: 15000});
window.location.href = '/';
}else{
if(data.vcode==1){
$("#verifycode").attr('src', '/verifycode?r='+Math.random())
}else if(data.vcode==2){
$("#totp-form").show();
$("#login-form").hide();
$("#totp_code").focus();
return false;
}
layer.alert(data.msg, {icon: 2});
}
}
});
return false;
}
function doTotp(){
var code = $("#totp_code").val();
if(code.length != 6){
layer.msg('动态口令格式错误', {icon: 2});
return false;
}
var ii = layer.load(2, {shade:[0.1,'#fff']});
$.post('/auth/totp', {code:code}, function(res){
layer.close(ii);
if(res.code == 0){
layer.msg('登录成功,正在跳转到首页', {icon: 1,shade: 0.01,time: 15000});
window.location.href = '/';
}else{
layer.alert(res.msg, {icon: 2});
}
});
return false;
}
function findpwd(){
$('#modal-findpwd').modal('show');
}
$(document).ready(function(){
$("#totp_code").keyup(function(){
var code = $(this).val();
if(code.length == 6){
$("#totp-form").submit();
}
});
});
</script>
</body>
</html>