mirror of https://github.com/tp4a/teleport
temp.
parent
f333a51e07
commit
9a74a0bd28
File diff suppressed because one or more lines are too long
|
@ -51,7 +51,7 @@ $app.on_init = function (cb_stack) {
|
||||||
$app.dom.input_username.val($app.options.username);
|
$app.dom.input_username.val($app.options.username);
|
||||||
}
|
}
|
||||||
|
|
||||||
$app.dom.captcha_image.attr('src', '/auth/captcha?' + Math.random());
|
$app.dom.captcha_image.attr('src', '/auth/captcha?h=36&rnd=' + Math.random());
|
||||||
|
|
||||||
window.onresize = $app.on_screen_resize;
|
window.onresize = $app.on_screen_resize;
|
||||||
$app.init_blur_bg();
|
$app.init_blur_bg();
|
||||||
|
@ -76,7 +76,7 @@ $app.on_init = function (cb_stack) {
|
||||||
$app.dom.btn_login.click($app.login_account);
|
$app.dom.btn_login.click($app.login_account);
|
||||||
|
|
||||||
$app.dom.captcha_image.click(function () {
|
$app.dom.captcha_image.click(function () {
|
||||||
$(this).attr('src', '/auth/captcha?' + Math.random());
|
$(this).attr('src', '/auth/captcha?h=36&rnd=' + Math.random());
|
||||||
$app.dom.input_captcha.focus().val('');
|
$app.dom.input_captcha.focus().val('');
|
||||||
});
|
});
|
||||||
$app.dom.input_username.keydown(function (event) {
|
$app.dom.input_username.keydown(function (event) {
|
||||||
|
@ -175,7 +175,7 @@ $app.login_account = function () {
|
||||||
else {
|
else {
|
||||||
$app.hide_op_box();
|
$app.hide_op_box();
|
||||||
$app.show_op_box('error', tp_error_msg(ret.code, ret.message));
|
$app.show_op_box('error', tp_error_msg(ret.code, ret.message));
|
||||||
$app.dom.captcha_image.attr('src', '/auth/captcha?' + Math.random());
|
$app.dom.captcha_image.attr('src', '/auth/captcha?h=36&rnd=' + Math.random());
|
||||||
$app.dom.input_captcha.focus().select().val('');
|
$app.dom.input_captcha.focus().select().val('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -375,329 +375,5 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//.table-detail {
|
|
||||||
// width: 100%;
|
|
||||||
//
|
|
||||||
// td {
|
|
||||||
// padding: 5px;
|
|
||||||
// white-space: nowrap;
|
|
||||||
// //width: 100px;
|
|
||||||
//
|
|
||||||
// &.cell-info-name {
|
|
||||||
// width: 180px;
|
|
||||||
// border-right: 1px solid #e7e7e7;
|
|
||||||
// div {
|
|
||||||
// width: 180px;
|
|
||||||
// overflow: hidden;
|
|
||||||
// text-overflow: ellipsis;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// .label {
|
|
||||||
// padding: 3px 5px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// td.host-offline {
|
|
||||||
// background-color: #ffcecc;
|
|
||||||
// text-align: center;
|
|
||||||
// vertical-align: middle;
|
|
||||||
//
|
|
||||||
// .host-offline-msg {
|
|
||||||
// color: #802506;
|
|
||||||
// font-size: 24px;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// tr.status-danger {
|
|
||||||
// background-color: @color-bg-danger;
|
|
||||||
// color: #fff;
|
|
||||||
//
|
|
||||||
// td.cell-info-name {
|
|
||||||
// border-right: 1px solid #f37272;
|
|
||||||
//
|
|
||||||
// & > a {
|
|
||||||
// //color: lighten(@color-bg-danger, 20%);
|
|
||||||
// color: #ddd;
|
|
||||||
// &:hover {
|
|
||||||
// color: #fff;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//
|
|
||||||
//.table > thead > tr > th {
|
|
||||||
// padding: 5px 5px;
|
|
||||||
// outline: none;
|
|
||||||
// white-space: nowrap;
|
|
||||||
// font-weight: normal;
|
|
||||||
// text-align: center;
|
|
||||||
// background-color: #ededed;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table > tbody > tr > td {
|
|
||||||
// padding: 5px;
|
|
||||||
// text-align: center;
|
|
||||||
// vertical-align: middle;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table > tbody > tr > td .nowrap {
|
|
||||||
// white-space: nowrap;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table.table-data thead .sorting, .table.table-data thead .sorting_asc, .table.table-data thead .sorting_desc {
|
|
||||||
// cursor: pointer;
|
|
||||||
// position: relative;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table.table-data thead .sorting > span:after, .table.table-data thead .sorting_asc > span:after, .table.table-data thead .sorting_desc > span:after {
|
|
||||||
// bottom: 4px;
|
|
||||||
// padding-left: 5px;
|
|
||||||
// display: inline-block;
|
|
||||||
// font-family: 'FontAwesome';
|
|
||||||
// opacity: .8;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table.table-data thead .sorting > span:after {
|
|
||||||
// opacity: .2;
|
|
||||||
// content: "\f0dc";
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table.table-data thead .sorting_asc > span:after {
|
|
||||||
// content: "\f0de";
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//.table.table-data thead .sorting_desc > span:after {
|
|
||||||
// content: "\f0dd";
|
|
||||||
//}
|
|
||||||
|
|
||||||
//.status {
|
|
||||||
// .status-name {
|
|
||||||
// float: left;
|
|
||||||
// padding: 3px 8px;
|
|
||||||
// background-color: #646464;
|
|
||||||
// border-top-left-radius: 4px;
|
|
||||||
// border-bottom-left-radius: 4px;
|
|
||||||
// //box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2);
|
|
||||||
// color: #e8e8e8;
|
|
||||||
// border-right: 1px solid #4c4c4c;
|
|
||||||
// //border:1px solid #999;
|
|
||||||
// text-shadow: 1px 1px 0 rgba(0, 0, 0, .6);
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// .status-bar-container {
|
|
||||||
// //padding-left:5px;
|
|
||||||
// height: 24px;
|
|
||||||
// //margin-bottom: 20px;
|
|
||||||
// overflow: hidden;
|
|
||||||
// background-color: #c1c1c1;
|
|
||||||
// border-top-right-radius: 4px;
|
|
||||||
// border-bottom-right-radius: 4px;
|
|
||||||
// box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
|
|
||||||
//
|
|
||||||
// .status-value, .status-percent {
|
|
||||||
// height: 100%;
|
|
||||||
// line-height: 24px;
|
|
||||||
// white-space: nowrap;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// .status-value {
|
|
||||||
// padding-left: 10px;
|
|
||||||
// color: #2d2d2d;
|
|
||||||
// text-shadow: 1px 1px 0 rgba(255, 255, 255, .3);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// .status-bar {
|
|
||||||
// text-align: center;
|
|
||||||
// box-shadow: inset 0 1px 2px rgba(0, 0, 0, .15);
|
|
||||||
//
|
|
||||||
// .status-percent {
|
|
||||||
// padding: 2px;
|
|
||||||
// color: #fff;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// &.status-info {
|
|
||||||
// .status-bar-container {
|
|
||||||
// background-color: lighten(@color-bg-info, 20%);
|
|
||||||
// }
|
|
||||||
// .status-bar {
|
|
||||||
// background-color: @color-bg-info;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// .status-value {
|
|
||||||
// background-color: @color-bg-info;
|
|
||||||
// color: #ffffff;
|
|
||||||
// text-shadow: 1px 1px 0 @color-bg-info;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// &.status-primary {
|
|
||||||
// //background-color: @color-bg-primary;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// &.status-success {
|
|
||||||
// .status-bar-container {
|
|
||||||
// background-color: lighten(@color-bg-success, 20%);
|
|
||||||
// }
|
|
||||||
// .status-bar {
|
|
||||||
// background-color: @color-bg-success;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// .status-value {
|
|
||||||
// background-color: @color-bg-success;
|
|
||||||
// color: #ffffff;
|
|
||||||
// text-shadow: 1px 1px 0 @color-bg-success;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// &.status-warning {
|
|
||||||
// .status-bar-container {
|
|
||||||
// background-color: lighten(@color-bg-warning, 20%);
|
|
||||||
// }
|
|
||||||
// .status-bar {
|
|
||||||
// background-color: @color-bg-warning;
|
|
||||||
// }
|
|
||||||
// .status-value {
|
|
||||||
// background-color: @color-bg-warning;
|
|
||||||
// color: #ffffff;
|
|
||||||
// text-shadow: 1px 1px 0 @color-bg-warning;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// &.status-danger {
|
|
||||||
// .status-bar-container {
|
|
||||||
// background-color: lighten(@color-bg-danger, 10%);
|
|
||||||
// }
|
|
||||||
// .status-bar {
|
|
||||||
// background-color: @color-bg-danger;
|
|
||||||
// }
|
|
||||||
// .status-value {
|
|
||||||
// background-color: @color-bg-danger;
|
|
||||||
// color: #ffffff;
|
|
||||||
// text-shadow: 1px 1px 0 @color-bg-danger;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
//==============================================
|
|
||||||
// 监控点的显示
|
|
||||||
//==============================================
|
|
||||||
.mp {
|
|
||||||
display: inline-block;
|
|
||||||
width: 20%;
|
|
||||||
max-width: 20%;
|
|
||||||
|
|
||||||
.mp-inner {
|
|
||||||
background-color: @color-bg-ignore;
|
|
||||||
//border: 1px solid #555;
|
|
||||||
margin: 3px;
|
|
||||||
border-radius: 4px;
|
|
||||||
//min-height:32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mp-name {
|
|
||||||
color: @color-text-ignore;
|
|
||||||
padding: 9px;
|
|
||||||
margin-bottom: 3px;
|
|
||||||
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-align: center;
|
|
||||||
//height:32px;
|
|
||||||
//line-height: 32px;
|
|
||||||
|
|
||||||
&.with-target {
|
|
||||||
//padding-top:10px;
|
|
||||||
padding-top: 17px;
|
|
||||||
padding-bottom: 1px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.mp-target {
|
|
||||||
display: inline-block;
|
|
||||||
float: left;
|
|
||||||
position: absolute;
|
|
||||||
font-size: 11px;
|
|
||||||
|
|
||||||
padding: 0 5px;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
|
|
||||||
color: rgba(255, 255, 255, 0.85);
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.mp-disabled {
|
|
||||||
.mp-inner {
|
|
||||||
background-color: @color-bg-ignore;
|
|
||||||
}
|
|
||||||
.mp-name {
|
|
||||||
color: @color-text-ignore;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&.mp-success {
|
|
||||||
.mp-inner {
|
|
||||||
background-color: @color-bg-success;
|
|
||||||
}
|
|
||||||
.mp-name {
|
|
||||||
color: @color-text-on-dark-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&.mp-danger {
|
|
||||||
.mp-inner {
|
|
||||||
background-color: @color-bg-danger;
|
|
||||||
}
|
|
||||||
.mp-name {
|
|
||||||
color: @color-text-on-dark-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&.mp-warning {
|
|
||||||
.mp-inner {
|
|
||||||
background-color: @color-bg-warning;
|
|
||||||
}
|
|
||||||
.mp-name {
|
|
||||||
color: @color-text-on-dark-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.host-offline {
|
|
||||||
background-color: #ffcecc;
|
|
||||||
height: 36px;
|
|
||||||
line-height: 36px;
|
|
||||||
|
|
||||||
padding:0 10px;
|
|
||||||
|
|
||||||
color: #802506;
|
|
||||||
font-size: 20px;
|
|
||||||
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.tips {
|
|
||||||
display: none;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
.tips {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.host-no-strategy {
|
|
||||||
color: @color-text-ignore;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "_overwrite_gritter";
|
@import "_overwrite_gritter";
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
import app.app_ver as app_ver
|
import app.app_ver as app_ver
|
||||||
page_title_ = '安装配置TELEPORT服务'
|
page_title_ = '安装配置TELEPORT服务'
|
||||||
%>
|
%>
|
||||||
<%inherit file="../page_maintenance_base.mako"/>
|
## <%inherit file="../page_maintenance_base.mako"/>
|
||||||
|
<%inherit file="../page_single_base.mako"/>
|
||||||
|
|
||||||
## <%block name="breadcrumb">
|
## <%block name="breadcrumb">
|
||||||
## <ol class="breadcrumb">
|
## <ol class="breadcrumb">
|
||||||
|
@ -10,11 +11,11 @@
|
||||||
## </ol>
|
## </ol>
|
||||||
## </%block>
|
## </%block>
|
||||||
|
|
||||||
<%block name="page_header">
|
<%block name="extend_css_file">
|
||||||
<h1><i class="fa fa-cog fa-fw"></i> ${self.attr.page_title_}</h1>
|
## <link href="${ static_url('css/maintenance.css') }" rel="stylesheet" type="text/css"/>
|
||||||
</%block>
|
</%block>
|
||||||
|
|
||||||
<%block name="extend_js">
|
<%block name="extend_js_file">
|
||||||
<script type="text/javascript" src="${ static_url('js/maintenance/install.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/maintenance/install.js') }"></script>
|
||||||
</%block>
|
</%block>
|
||||||
|
|
||||||
|
@ -24,6 +25,16 @@
|
||||||
</script>
|
</script>
|
||||||
</%block>
|
</%block>
|
||||||
|
|
||||||
|
<%block name="page_header">
|
||||||
|
<div id="page-header" class="header header-fixed-top">
|
||||||
|
<nav class="navbar navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<h1><i class="fa fa-cog fa-fw"></i> ${self.attr.page_title_}</h1>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</%block>
|
||||||
|
|
||||||
## Begin Main Body.
|
## Begin Main Body.
|
||||||
|
|
||||||
<div class="content-box">
|
<div class="content-box">
|
||||||
|
|
|
@ -58,24 +58,11 @@
|
||||||
<script type="text/javascript" src="${ static_url('plugins/json2/json2.js') }"></script>
|
<script type="text/javascript" src="${ static_url('plugins/json2/json2.js') }"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
||||||
## <script type="text/javascript" src="${ static_url('js/tpapp_const.js') }"></script>
|
|
||||||
## <script type="text/javascript" src="${ static_url('js/tpapp_common.js') }"></script>
|
|
||||||
## <script type="text/javascript" src="${ static_url('js/tpapp.js') }"></script>
|
|
||||||
<script type="text/javascript" src="${ static_url('js/tp-utils.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/tp-utils.js') }"></script>
|
||||||
<script type="text/javascript" src="${ static_url('js/tp-const.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/tp-const.js') }"></script>
|
||||||
## <script type="text/javascript" src="${ static_url('js/tp-assist.js') }"></script>
|
|
||||||
<script type="text/javascript" src="${ static_url('js/teleport.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/teleport.js') }"></script>
|
||||||
|
|
||||||
<%block name="extend_js"/>
|
<%block name="extend_js"/>
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
## $(document).ready(function () {
|
|
||||||
## tpapp.init();
|
|
||||||
## });
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<%block name="embed_js" />
|
<%block name="embed_js" />
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
<link href="${ static_url('plugins/bootstrap/css/bootstrap.min.css') }" rel="stylesheet" type="text/css"/>
|
<link href="${ static_url('plugins/bootstrap/css/bootstrap.min.css') }" rel="stylesheet" type="text/css"/>
|
||||||
<link href="${ static_url('plugins/font-awesome/css/font-awesome.min.css') }" rel="stylesheet">
|
<link href="${ static_url('plugins/font-awesome/css/font-awesome.min.css') }" rel="stylesheet">
|
||||||
|
|
||||||
<link href="${ static_url('css/error.css') }" rel="stylesheet" type="text/css"/>
|
## <link href="${ static_url('css/error.css') }" rel="stylesheet" type="text/css"/>
|
||||||
|
|
||||||
|
<link href="${ static_url('css/single.css') }" rel="stylesheet" type="text/css"/>
|
||||||
|
|
||||||
<%block name="extend_css_file"/>
|
<%block name="extend_css_file"/>
|
||||||
<%block name="embed_css"/>
|
<%block name="embed_css"/>
|
||||||
|
@ -27,21 +29,36 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div id="page-header">
|
<div>
|
||||||
|
<%block name="page_header"/>
|
||||||
|
|
||||||
|
<div id="page-content">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="title"><%block name="header_title"/></div>
|
${self.body()}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="page-content">
|
|
||||||
<div class="container">
|
|
||||||
|
|
||||||
${self.body()}
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<%include file="_footer.mako"/>
|
<%include file="_footer.mako"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
## <div id="page-header">
|
||||||
|
## <nav class="navbar navbar-fixed-top">
|
||||||
|
## <div class="container">
|
||||||
|
## <%block name="page_header"/>
|
||||||
|
## </div>
|
||||||
|
## </nav>
|
||||||
|
## </div>
|
||||||
|
|
||||||
|
## <div id="page-content">
|
||||||
|
## <div class="container">
|
||||||
|
##
|
||||||
|
## ${self.body()}
|
||||||
|
##
|
||||||
|
## </div>
|
||||||
|
## </div>
|
||||||
|
|
||||||
|
## <%include file="_footer.mako"/>
|
||||||
|
|
||||||
<%block name="extend_content" />
|
<%block name="extend_content" />
|
||||||
|
|
||||||
|
@ -59,11 +76,8 @@
|
||||||
<script type="text/javascript" src="${ static_url('js/tp-const.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/tp-const.js') }"></script>
|
||||||
<script type="text/javascript" src="${ static_url('js/teleport.js') }"></script>
|
<script type="text/javascript" src="${ static_url('js/teleport.js') }"></script>
|
||||||
|
|
||||||
|
|
||||||
<%block name="extend_js_file"/>
|
<%block name="extend_js_file"/>
|
||||||
|
|
||||||
<%block name="embed_js" />
|
<%block name="embed_js" />
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,9 +1,9 @@
|
||||||
<%!
|
<%!
|
||||||
page_title_ = '设置密码'
|
page_title_ = '密码管理'
|
||||||
%>
|
%>
|
||||||
<%inherit file="../page_single_base.mako"/>
|
<%inherit file="../page_single_base.mako"/>
|
||||||
|
|
||||||
<%block name="header_title">
|
<%block name="page_header">
|
||||||
<a href="http://teleport.eomsoft.net" target="_blank"><span class="logo"></span></a>
|
<a href="http://teleport.eomsoft.net" target="_blank"><span class="logo"></span></a>
|
||||||
</%block>
|
</%block>
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<div class="error-box">
|
<div class="error-box">
|
||||||
<div class="error-icon-box">
|
<div class="error-icon-box">
|
||||||
<i class="fa fa-warning"></i>
|
<i id="icon-bg" class="fa fa-warning"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="error-message-box">
|
<div class="error-message-box">
|
||||||
<div id="title" class="title">设置密码</div>
|
<div id="title" class="title">设置密码</div>
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
|
|
||||||
<div class="row" style="padding:0 20px;margin-top:10px;">
|
<div class="row" style="padding:0 20px;margin-top:10px;">
|
||||||
<div class="col-sm-4">
|
<div class="col-sm-4">
|
||||||
<button type="button" class="btn btn-primary" id="btn-send-email" style="width:100%;"><i class="fa fa-check fa-fw"></i> 重置密码</button>
|
<button type="button" class="btn btn-primary" id="btn-send-email" style="width:100%;"><i class="fa fa-search-plus fa-fw"></i> 找回密码</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div id="send-result" class="alert alert-danger" style="display: none;"></div>
|
<div id="send-result" class="alert alert-danger" style="display: none;"></div>
|
||||||
|
@ -109,18 +109,18 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## <div class="form-group form-group-sm">
|
## <div class="form-group form-group-sm">
|
||||||
## <div class="col-sm-4">
|
## <div class="col-sm-4">
|
||||||
## <div class="input-group">
|
## <div class="input-group">
|
||||||
## <input data-field="password" type="password" class="form-control mono" placeholder="设置新密码">
|
## <input data-field="password" type="password" class="form-control mono" placeholder="设置新密码">
|
||||||
## <span class="input-group-btn"><button class="btn btn-sm btn-default" type="button" id="btn-switch-password"><i class="fa fa-eye fa-fw"></i></button></span>
|
## <span class="input-group-btn"><button class="btn btn-sm btn-default" type="button" id="btn-switch-password"><i class="fa fa-eye fa-fw"></i></button></span>
|
||||||
## </div>
|
## </div>
|
||||||
## </div>
|
## </div>
|
||||||
## <div class="col-sm-8">
|
## <div class="col-sm-8">
|
||||||
## <button type="button" class="btn btn-sm btn-primary" id="btn-reset-password"><i class="fa fa-check fa-fw"></i> 重置密码</button>
|
## <button type="button" class="btn btn-sm btn-primary" id="btn-reset-password"><i class="fa fa-check fa-fw"></i> 重置密码</button>
|
||||||
## </div>
|
## </div>
|
||||||
## </div>
|
## </div>
|
||||||
## <div class="clear-float"></div>
|
## <div class="clear-float"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -135,6 +135,7 @@
|
||||||
|
|
||||||
$app.dom = {
|
$app.dom = {
|
||||||
title: $('#title'),
|
title: $('#title'),
|
||||||
|
icon_bg: $('#icon-bg'),
|
||||||
|
|
||||||
err_area: $('#error-area'),
|
err_area: $('#error-area'),
|
||||||
message: $('#message'),
|
message: $('#message'),
|
||||||
|
@ -146,10 +147,15 @@
|
||||||
password_area: $('#password-area')
|
password_area: $('#password-area')
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$app.dom.captcha_image.click(function () {
|
||||||
|
$(this).attr('src', '/auth/captcha?h=28&rnd=' + Math.random());
|
||||||
|
$app.dom.input_captcha.focus().val('');
|
||||||
|
});
|
||||||
|
|
||||||
if ($app.options.mode === 1) {
|
if ($app.options.mode === 1) {
|
||||||
// show 'find-my-password' page
|
// show 'find-my-password' page
|
||||||
$app.dom.title.text('找回密码');
|
$app.dom.title.text('找回密码');
|
||||||
|
$app.dom.icon_bg.removeClass().addClass('fa fa-search-plus');
|
||||||
$app.dom.captcha_image.attr('src', '/auth/captcha?h=28&rnd=' + Math.random());
|
$app.dom.captcha_image.attr('src', '/auth/captcha?h=28&rnd=' + Math.random());
|
||||||
$app.dom.find_password_area.show();
|
$app.dom.find_password_area.show();
|
||||||
} else if ($app.options.mode === 2) {
|
} else if ($app.options.mode === 2) {
|
||||||
|
|
|
@ -78,21 +78,24 @@ class MeHandler(TPBaseHandler):
|
||||||
class ResetPasswordHandler(TPBaseHandler):
|
class ResetPasswordHandler(TPBaseHandler):
|
||||||
def get(self):
|
def get(self):
|
||||||
param = {
|
param = {
|
||||||
'mode': 0, # mode=1, unknown mode.
|
'mode': 0, # mode=0, unknown mode.
|
||||||
'token': '',
|
'token': '',
|
||||||
'code': TPE_PARAM
|
'code': TPE_OK
|
||||||
}
|
}
|
||||||
|
|
||||||
_mode = self.get_argument('mode', 1)
|
|
||||||
_token = self.get_argument('token', None)
|
_token = self.get_argument('token', None)
|
||||||
if _token is None:
|
if _token is None:
|
||||||
param['mode'] = 1 # mode=1, show 'find-my-password' page.
|
param['mode'] = 1 # mode=1, show 'find-my-password' page.
|
||||||
else:
|
else:
|
||||||
err, email = user.check_reset_token(_token)
|
err = user.check_reset_token(_token)
|
||||||
param['mode'] = 3 # mode=3, show 'set-new-password' page
|
|
||||||
param['token'] = _token
|
|
||||||
param['email'] = email
|
|
||||||
param['code'] = err
|
param['code'] = err
|
||||||
|
param['token'] = _token
|
||||||
|
|
||||||
|
if err != TPE_OK:
|
||||||
|
param['mode'] = 2 # mode=2, show 'error' page
|
||||||
|
else:
|
||||||
|
param['mode'] = 3 # mode=3, show 'set-new-password' page
|
||||||
|
|
||||||
self.render('user/reset-password.mako', page_param=json.dumps(param))
|
self.render('user/reset-password.mako', page_param=json.dumps(param))
|
||||||
|
|
||||||
|
@ -469,7 +472,6 @@ class DoResetPasswordHandler(TPBaseJsonHandler):
|
||||||
try:
|
try:
|
||||||
user_id = int(args['id'])
|
user_id = int(args['id'])
|
||||||
mode = int(args['mode'])
|
mode = int(args['mode'])
|
||||||
# email = args['email'].strip()
|
|
||||||
password = args['password']
|
password = args['password']
|
||||||
except:
|
except:
|
||||||
return self.write_json(TPE_PARAM)
|
return self.write_json(TPE_PARAM)
|
||||||
|
|
|
@ -292,29 +292,29 @@ def generate_reset_password_token(handler, user_id):
|
||||||
|
|
||||||
def check_reset_token(token):
|
def check_reset_token(token):
|
||||||
db = get_db()
|
db = get_db()
|
||||||
s = SQL(db)
|
# s = SQL(db)
|
||||||
_time_now = tp_timestamp_utc_now()
|
_time_now = tp_timestamp_utc_now()
|
||||||
|
|
||||||
# 0. query user's id
|
# 0. query user's id
|
||||||
sql = 'SELECT user_id, create_time FROM `{dbtp}user_rpt` WHERE token={dbph};'.format(dbtp=db.table_prefix, dbph=db.place_holder)
|
sql = 'SELECT create_time FROM `{dbtp}user_rpt` WHERE token={dbph};'.format(dbtp=db.table_prefix, dbph=db.place_holder)
|
||||||
db_ret = db.query(sql, (token,))
|
db_ret = db.query(sql, (token,))
|
||||||
if db_ret is None or len(db_ret) == 0:
|
if db_ret is None or len(db_ret) == 0:
|
||||||
return TPE_NOT_EXISTS, ''
|
return TPE_NOT_EXISTS
|
||||||
|
|
||||||
user_id = db_ret[0][0]
|
# user_id = db_ret[0][0]
|
||||||
create_time = db_ret[0][1]
|
create_time = db_ret[0][0]
|
||||||
|
|
||||||
err = s.select_from('user', ['email'], alt_name='u').where('u.id="{user_id}"'.format(user_id=user_id)).query()
|
# err = s.select_from('user', ['email'], alt_name='u').where('u.id="{user_id}"'.format(user_id=user_id)).query()
|
||||||
if err != TPE_OK:
|
# if err != TPE_OK:
|
||||||
return err, ''
|
# return err
|
||||||
if len(s.recorder) == 0:
|
# if len(s.recorder) == 0:
|
||||||
return TPE_DATABASE, ''
|
# return TPE_DATABASE
|
||||||
email = s.recorder[0].email
|
# email = s.recorder[0].email
|
||||||
|
|
||||||
if _time_now - create_time > 24 * 60 * 60:
|
if _time_now - create_time > 24 * 60 * 60:
|
||||||
return TPE_EXPIRED, email
|
return TPE_EXPIRED
|
||||||
else:
|
else:
|
||||||
return TPE_OK, email
|
return TPE_OK
|
||||||
|
|
||||||
|
|
||||||
def update_login_info(handler, user_id):
|
def update_login_info(handler, user_id):
|
||||||
|
|
Loading…
Reference in New Issue