From 109a9447a7d5fa24920ac7764994c10e03731ef4 Mon Sep 17 00:00:00 2001
From: ChenLingjie <3132185193@qq.com>
Date: Thu, 4 Jul 2024 11:16:32 +0800
Subject: [PATCH] Fix bug 574
---
app/account_service.py | 52 +++++++++++++++++++-------
app/black.txt | 1 +
app/templates/login.html | 81 ++++++++++++++++++++++++++++++++++------
3 files changed, 110 insertions(+), 24 deletions(-)
create mode 100644 app/black.txt
diff --git a/app/account_service.py b/app/account_service.py
index fd5f7f6..068446f 100644
--- a/app/account_service.py
+++ b/app/account_service.py
@@ -1,7 +1,7 @@
from flask import *
from markupsafe import escape
from Login import check_username_availability, verify_user, add_user, get_expiry_date, change_password, WarningMessage
-
+from model import deactivate_user
# 初始化蓝图
accountService = Blueprint("accountService", __name__)
@@ -44,7 +44,6 @@ def signup():
return jsonify({'status': '1'})
-
@accountService.route("/login", methods=['GET', 'POST'])
def login():
'''
@@ -60,17 +59,42 @@ def login():
username = escape(request.form['username'])
password = escape(request.form['password'])
verified = verify_user(username, password)
- if verified:
- # 登录成功,写入session
- session['logged_in'] = True
- session[username] = username
- session['username'] = username
- user_expiry_date = get_expiry_date(username)
- session['expiry_date'] = user_expiry_date
- session['visited_articles'] = None
- return jsonify({'status': '1'})
- else:
- return jsonify({'status': '0'})
+ with open('black.txt', 'a+') as f:
+ f.seek(0)
+ lines = f.readlines()
+ line=[]
+ for i in lines:
+ line.append(i.strip('\n'))
+ #读black.txt文件判断用户是否在黑名单中
+ if verified and username not in line:
+ # 登录成功,写入session
+ session['logged_in'] = True
+ session[username] = username
+ session['username'] = username
+ user_expiry_date = get_expiry_date(username)
+ session['expiry_date'] = user_expiry_date
+ session['visited_articles'] = None
+ f.close()
+ return jsonify({'status': '1'})
+ elif verified==0 and password!='黑名单':
+ #输入错误密码次数小于5次
+ return jsonify({'status': '0'})
+ else:
+ #输入错误密码次数达到5次
+ with open('black.txt', 'a+') as f:
+ f.seek(0)
+ lines = f.readlines()
+ line = []
+ for i in lines:
+ line.append(i.strip('\n'))
+ if username in line:
+ return jsonify({'status': '5'})
+ else:
+ f.write(username)
+ f.write('\n')
+ return jsonify({'status': '5'})
+
+
@accountService.route("/logout", methods=['GET', 'POST'])
@@ -84,6 +108,7 @@ def logout():
return redirect(url_for('mainpage'))
+
@accountService.route("/reset", methods=['GET', 'POST'])
def reset():
'''
@@ -109,3 +134,4 @@ def reset():
return jsonify({'status':'1'}) # 修改成功
else:
return jsonify({'status':'2'}) # 修改失败
+
diff --git a/app/black.txt b/app/black.txt
new file mode 100644
index 0000000..daa84a2
--- /dev/null
+++ b/app/black.txt
@@ -0,0 +1 @@
+hsy
diff --git a/app/templates/login.html b/app/templates/login.html
index b0806b6..c3aebf0 100644
--- a/app/templates/login.html
+++ b/app/templates/login.html
@@ -8,7 +8,27 @@