login test

merge-requests/2/merge
bug_creator 3 years ago
parent 93cad5fb25
commit 5f5330fdc3

@ -25,6 +25,29 @@ def before_request():
return redirect(url_for('auth.unconfirmed'))
@auth.route('/logintest', methods=['GET', 'POST'])
def logintest():
if request.method == 'GET':
return render_template('auth/login-and-register.html')
if request.method == 'POST':
student_id = request.form["user"]
password = request.form["pwd"]
user = User.query.filter_by(student_id=student_id).first()
if user is None:
flash("Your StudentID/OrganizationID has not been registered")
return render_template('auth/login.html')
elif user.verify_password(password) is False:
flash("StudentID/OrganizationID or password error")
return render_template('auth/login.html')
if user is not None and user.verify_password(password):
login_user(user, True)
next = request.args.get('next')
if next is None or not next.startswith('/'):
next = url_for('main.index')
return redirect(next)
return render_template('auth/login.html')
# 登录
@auth.route('/login', methods=['GET', 'POST'])
def login():

@ -0,0 +1,23 @@
var signUpButton = document.getElementById('signUp')
var signInButton = document.getElementById('signIn')
var container = document.getElementById('mainbox')
signUpButton.addEventListener('click', function () {
container.classList.add('right-panel-active')
})
signInButton.addEventListener('click', function () {
container.classList.remove('right-panel-active')
});
function check_email(str){
  var pattern = new RegExp("@");
var email = document.getElementById("email");
  if (pattern.test(str.value)){
  }
else{
alert("Please enter correct email address")
email.focus();
}
}

@ -0,0 +1,236 @@
* {
box-sizing: border-box;
}
body {
font-family: 'Monaco', sans-serif;
background: #f6f5f7;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100vh;
/*margin: -20px 0 50px;*/
}
h1 {
font-weight: bold;
margin-bottom: 20px;
}
p {
font-size: 14px;
line-height: 20px;
letter-spacing: .5px;
/*margin: 20px 0 30px;*/
}
span {
font-size: 12px;
}
a {
color: #333;
font-size: 14px;
text-decoration: none;
}
.mainbox {
background: #fff;
border-radius: 10px;
box-shadow: 0 14px 28px rgba(0, 0, 0, .25), 0 10px 10px rgba(0, 0, 0, .22);
position: relative;
overflow: hidden;
width: 768px;
max-width: 100%;
min-height: 480px;
margin: 0 auto;
top: 50%;
transform: translate(0, -50%);
}
.form-container form {
background: #fff;
display: flex;
flex-direction: column;
padding: 0 50px;
height: 100%;
justify-content: center;
align-items: center;
text-align: center;
}
.social-container {
margin: 20px 0;
}
.social-container a {
border: 1px solid #ddd;
border-radius: 50%;
display: inline-flex;
justify-content: center;
align-items: center;
margin: 0 5px;
height: 40px;
width: 40px;
}
.social-container a:hover {
background-color: #eee;
}
.form-container input {
background: #eee;
border-radius: 10px;
border: none;
/*padding: 12px 15px;*/
/*margin: 8px 0;*/
width: 100%;
outline: none;
}
#login_submit,#register_submit{
border-radius: 20px;
border: 1px solid #e7a00e;
background: #e7a00e;
color: #fff;
font-size: 12px;
font-weight: bold;
padding: 12px 45px;
letter-spacing: 1px;
text-transform: uppercase;
transition: transform 80ms ease-in;
cursor: pointer;
width: fit-content;
}
button {
border-radius: 20px;
border: 1px solid #e7a00e;
background: #e7a00e;
color: #fff;
font-size: 12px;
font-weight: bold;
padding: 12px 45px;
letter-spacing: 1px;
text-transform: uppercase;
transition: transform 80ms ease-in;
cursor: pointer;
}
button:active {
transform: scale(.95);
}
button:focus {
outline: none;
}
button.ghost {
background: transparent;
border-color: #fff;
}
.form-container {
position: absolute;
top: 0;
height: 100%;
transition: all .6s ease-in-out;
}
.sign-in-container {
left: 0;
width: 50%;
z-index: 2;
}
.sign-up-container {
left: 0;
width: 50%;
z-index: 1;
opacity: 0;
}
.overlay-container {
position: absolute;
top: 0;
left: 50%;
width: 50%;
height: 100%;
overflow: hidden;
transition: transform .6s ease-in-out;
z-index: 100;
}
.overlay {
background: #9f6f0e;
background: linear-gradient(to right, #c58a0f,#e7a00e) no-repeat 0 0 / cover;
color: #fff;
position: relative;
left: -100%;
height: 100%;
width: 200%;
transform: translateY(0);
transition: transform .6s ease-in-out;
}
.overlay-panel {
position: absolute;
top: 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 0 40px;
height: 100%;
width: 50%;
text-align: center;
transform: translateY(0);
transition: transform .6s ease-in-out;
}
.overlay-right {
right: 0;
transform: translateY(0);
}
.overlay-left {
transform: translateY(-20%);
}
/* Move signin to right */
.mainbox.right-panel-active .sign-in-container {
transform: translateY(100%);
}
/* Move overlay to left */
.mainbox.right-panel-active .overlay-container {
transform: translateX(-100%);
}
/* Bring signup over signin */
.mainbox.right-panel-active .sign-up-container {
transform: translateX(100%);
opacity: 1;
z-index: 5;
}
/* Move overlay back to right */
.mainbox.right-panel-active .overlay {
transform: translateX(50%);
}
/* Bring back the text to center */
.mainbox.right-panel-active .overlay-left {
transform: translateY(0);
}
/* Same effect for right */
.mainbox.right-panel-active .overlay-right {
transform: translateY(20%);
}
form>div{
width: 100%;
}

@ -11,7 +11,7 @@ body{
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
@ -24,7 +24,7 @@ body{
box-sizing: border-box;
padding: 10px;
font-size: 16px;
margin: 12px 0;
margin: 6px 0;
}
.form-signin .form-control:focus {
z-index: 2;
@ -36,3 +36,8 @@ body{
.navbar-toggle {
background-color: #e7a00e;
}
h1{
margin-bottom: 36px;
}

@ -0,0 +1,185 @@
{% extends "base.html" %}
{% block title %}Login{% endblock %}
{% block head %}
{{ super() }}
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="{{ url_for('static',filename='login-and-register.css') }}">
<link href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Custom styles for this template -->
<link href="{{ url_for('static',filename='signin.css') }}" rel="stylesheet">
<link href="{{ url_for('static',filename='bg.css') }}" rel="stylesheet">
<script type="application/javascript" src="{{ url_for('static',filename='js/gt.js') }}"></script>
{% endblock %}
{% block body %}
<div id="onepagebg" class="onepage-bg" style="width: 100%;height: 100%;text-align: center">
<div class="mainbox" id="mainbox">
<div class="form-container sign-up-container" style="overflow:scroll">
<form class="form-signin" method="post" style="margin: 75px auto 0 auto;">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<h1 class="form-signin-heading">Register</h1>
<!-- {# 前两个信息是用来验证的(学号,身份证号)#}-->
<!-- {# 您的学号#}-->
<label for="BJUT_id" class="sr-only">Student number</label>
<input name="BJUT_id" id="BJUT_id" type="text" class="form-control student-num" placeholder="BJUT Number">
<p id="stuid"></p>
<!-- {# 您的身份证号#}-->
<label for="id_num" class="sr-only">ID card number</label>
<input name="id_num" id="id_num" type="text" class="form-control" placeholder="Your ID number">
<p id="id"></p>
<h5><small>The above information is only used to confirm you are the student of BJUT</small></h5>
<!-- {# 您想要设置的用户名#}-->
<label for="user_name" class="sr-only">User name</label>
<input name="user_name" id="user_name" type="text" class="form-control" placeholder="User name">
<p id="user"></p>
<!-- {# 您的邮箱#}-->
<label for="email" class="sr-only">Email</label>
<input name="email" id="email" type="text" class="form-control" placeholder="Email">
<p id="emailp"></p>
<!-- {# 第一次密码#}-->
<label for="password" class="sr-only">Password</label>
<input name="pwd" id="password" type="password" class="form-control" placeholder="Password">
<!-- {# 第二次密码#}-->
<label for="confirm_pwd" class="sr-only">Confirm password</label>
<input name="confirm_pwd" id="confirm_pwd" type="password" class="form-control" placeholder="Confirm password">
<p id="pwd"></p>
<button class="btn btn-lg btn-warning btn-block chose" disabled="disabled" id="submit" type="submit">Submit</button>
</form>
</div>
<div class="form-container sign-in-container">
<form role="form" class="form-signin" method="post" style="margin: 0px auto 0px auto;">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
<h1 class="form-signin-heading">Login</h1>
<label for="inputName" class="sr-only">Email address</label>
<input type="text" id="inputName" class="form-control" placeholder="StudentID/OrganizationID"
name="user" required autofocus>
<p id="p1"></p>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" name="pwd" placeholder="Password"
required autofocus>
<p id="p2" class="text-danger"></p>
<div>
{# <label>完成验证:</label>#}
<div id="captcha">
{# <p id="wait" class="show"></p>#}
</div>
</div>
<br>
<p id="notice" class="hide">请先完成验证</p>
<button class="btn btn-lg btn-warning btn-block chose" id="submit" disabled="disabled"
type="submit">Sign in
</button>
<div >
<p>
Forgot your password?
<a href="/auth/reset">reset</a><br>
</p>
</div>
</form>
</div>
<div class="overlay-container">
<div class="overlay">
<div class="overlay-panel overlay-left">
<h1>Existing account?</h1>
<p>Go to Sign In</p>
<button class="ghost" id="signIn">Sign In</button>
</div>
<div class="overlay-panel overlay-right">
<h1>No Account?</h1>
<p>Join us Now</p>
<button class="ghost" id="signUp">Sign Up</button>
</div>
</div>
</div>
</div>
<script src={{ url_for('static',filename='js/login-and-register.js') }}></script>
<script>
var stuID = document.getElementById('inputName');
var info = document.getElementById('p1');
var pwd = document.getElementById('inputPassword');
//学号
{#stuID.onblur = function () {#}
{# var stuid = this.value;#}
{# var reg = /[0-9]{1,4}/;#}
{#var reg = /^\d{18}$/;#}
{# // 不符合规则的话#}
{# if (!reg.test(stuid)) {#}
{# info.innerHTML = 'Please enter StudentID or OrganizationID';#}
{# info.className = 'text-danger';#}
{# document.getElementById("submit").disabled = true;#}
{# } else {#}
{# info.innerHTML = '';#}
{# info.className = 'text-success';#}
{# }#}
{# if (info.className == 'text-success') {#}
{# document.getElementById("submit").disabled = false;#}
{# }#}
{#}#}
var handler = function (captchaObj) {
$("#submit").click(function (e) {
var result = captchaObj.getValidate();
if (!result) {
$("#notice").show();
setTimeout(function () {
$("#notice").hide();
}, 2000);
e.preventDefault();
}
});
// 将验证码加到id为captcha的元素里同时会有三个input的值用于表单提交
captchaObj.appendTo("#captcha");
captchaObj.onReady(function () {
$("#wait").hide();
});
};
$.ajax({
url: "register_check?t=" + (new Date()).getTime(), // 加随机数防止缓存
type: "get",
dataType: "json",
success: function (data) {
// 调用 initGeetest 初始化参数
// 参数1配置参数
// 参数2回调回调的第一个参数验证码对象之后可以使用它调用相应的接口
initGeetest({
gt: data.gt,
challenge: data.challenge,
new_captcha: data.new_captcha, // 用于宕机时表示是新验证码的宕机
offline: !data.success, // 表示用户后台检测极验服务器是否宕机,一般不需要关注
product: "float", // 产品形式包括floatpopup
width: "100%"
}, handler);
}
});
</script>
</div>
{% endblock %}
Loading…
Cancel
Save