From ae5fda34882935eda82e7d54d97cff1224b1f0ca Mon Sep 17 00:00:00 2001 From: happyZYM Date: Sat, 22 Jun 2024 04:00:38 +0000 Subject: [PATCH] write data check --- UI/datacheck.py | 12 +++++++++ UI/main.py | 13 ++++++---- UI/templates/base.html | 1 + UI/templates/login.html | 56 +++++++++++++++++++++++++++++++++++------ 4 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 UI/datacheck.py diff --git a/UI/datacheck.py b/UI/datacheck.py new file mode 100644 index 0000000..b9d5a20 --- /dev/null +++ b/UI/datacheck.py @@ -0,0 +1,12 @@ +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField +from wtforms.validators import InputRequired, Length, Regexp +class LoginForm(FlaskForm): + username = StringField('Username', validators=[ + InputRequired(message='Username is required.'), + Regexp(r'^[a-zA-Z][a-zA-Z0-9_]{0,19}$', message='Invalid username format.') + ]) + password = PasswordField('Password', validators=[ + InputRequired(message='Password is required.'), + Length(min=1, max=30, message='Password must be between 1 and 30 characters long.') + ]) \ No newline at end of file diff --git a/UI/main.py b/UI/main.py index 78a175c..04a3e95 100644 --- a/UI/main.py +++ b/UI/main.py @@ -9,6 +9,7 @@ from dotenv import load_dotenv import time import socket import utils +from datacheck import * # Load environment variables from .env file load_dotenv() @@ -66,9 +67,10 @@ def about(): @app.route('/login', methods=['GET', 'POST']) def login(): - if request.method == 'POST': - username = request.form['username'] - password = request.form['password'] + form = LoginForm() + if form.validate_on_submit(): + username = form.username.data + password = form.password.data # 调用 ExecCommand 执行登录命令 login_response = ExecCommand(f'login -u {username} -p {password}') @@ -81,9 +83,10 @@ def login(): else: error = 'An unknown error occurred.' - return render_template('login.html', error=error) + flash(error, 'error') + return redirect(url_for('login')) - return render_template('login.html') + return render_template('login.html', form=form) @app.before_request def before_request(): diff --git a/UI/templates/base.html b/UI/templates/base.html index 44cb2f4..623b42f 100644 --- a/UI/templates/base.html +++ b/UI/templates/base.html @@ -46,5 +46,6 @@ + diff --git a/UI/templates/login.html b/UI/templates/login.html index add3cba..7690815 100644 --- a/UI/templates/login.html +++ b/UI/templates/login.html @@ -6,22 +6,62 @@

Login

- {% if error %} - - {% endif %} -
+ + {{ form.hidden_tag() }}
- + +
+ Username must start with a letter and can only contain letters, numbers, and underscores (max 20 characters). +
- + +
+ Password must be between 1 and 30 characters long. +
+ + {% endblock %} \ No newline at end of file