From dc70b84446277e3d0396bf44a83e1c941ce8552d Mon Sep 17 00:00:00 2001 From: aneuhmanh Date: Mon, 17 Feb 2025 12:11:01 +0200 Subject: [PATCH] auth issue fix --- app.py | 75 ++++++++++++++++++++++++++-------------------------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/app.py b/app.py index 79fbfc4..45fb75d 100644 --- a/app.py +++ b/app.py @@ -21,6 +21,9 @@ from flask_wtf.file import FileAllowed from flask_wtf.csrf import validate_csrf from wtforms import StringField, PasswordField, SubmitField, FileField,BooleanField, RadioField, SelectField, TextAreaField from wtforms.validators import DataRequired, Length, EqualTo, ValidationError, Regexp +from wtforms import StringField, PasswordField, SubmitField +from wtforms.validators import DataRequired, EqualTo, Regexp +from flask_wtf import FlaskForm, RecaptchaField app = Flask(__name__) csrf = CSRFProtect(app) @@ -775,47 +778,6 @@ def user_pubs(pub_type, username): search_query=search_query ) -from wtforms import StringField, PasswordField, SubmitField -from wtforms.validators import DataRequired, EqualTo, Regexp -from flask_wtf import FlaskForm, RecaptchaField - -class RegistrationForm(FlaskForm): - username = StringField( - 'Username', - validators=[ - DataRequired(), - Length(min=3, max=20), - Regexp(r'^[a-zA-Z0-9_]+$', message="Username can contain only letters, numbers, and underscores.") - ] - ) - password = PasswordField('Password', validators=[DataRequired(), Length(min=6)]) - confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) - recaptcha = RecaptchaField() - submit = SubmitField('Register') - - def validate_username(self, username): - user = User.query.filter_by(username=username.data).first() - if user: - return - - if not re.match(r'^[a-zA-Z0-9_]+$', username.data): - return - - def validate_username(self, username): - username.data = username.data.lower() - user = User.query.filter_by(username=username.data).first() - if user: - return - - if not re.match(r'^[a-z0-9]+$', username.data): - return - - def validate_ip(self): - ip_address = get_client_ip() - user_with_ip = User.query.filter_by(ip_address=ip_address).first() - if user_with_ip: - return - class LoginForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()]) @@ -831,6 +793,35 @@ def get_client_ip(): return ip_address +class RegistrationForm(FlaskForm): + username = StringField( + 'Username', + validators=[ + DataRequired(), + Length(min=3, max=20), + Regexp(r'^[a-zA-Z0-9_]+$', message="Username can contain only letters, numbers, and underscores.") + ] + ) + password = PasswordField('Password', validators=[DataRequired(), Length(min=6)]) + confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) + recaptcha = RecaptchaField() + submit = SubmitField('Register') + + def validate_username(self, username): + username.data = username.data.lower() + user = User.query.filter_by(username=username.data).first() + if user: + return + + if not re.match(r'^[a-z0-9]+$', username.data): + return + + def validate_ip(self): + ip_address = get_client_ip() + user_with_ip = User.query.filter_by(ip_address=ip_address).first() + if user_with_ip: + return + @app.route('/register', methods=['GET', 'POST']) def register(): form = RegistrationForm() @@ -1605,4 +1596,4 @@ def buy_item(item_id): if __name__ == '__main__': with app.app_context(): db.create_all() - app.run(debug=False) \ No newline at end of file + app.run(debug=True) \ No newline at end of file