Files
findings/pages/register.py
usernames122 877a246134 first commit
2025-08-10 23:42:02 +02:00

69 lines
2.6 KiB
Python

import re
from datetime import datetime
from flask import Blueprint, render_template, request, redirect, url_for, flash
from werkzeug.security import generate_password_hash
from models import db, User
register_bp = Blueprint('register', __name__, url_prefix='/register')
@register_bp.route('/', methods=['GET', 'POST'])
def register():
username = ''
password = ''
confirm_password = ''
username_err = ''
password_err = ''
confirm_password_err = ''
if request.method == 'POST':
username = request.form.get('username', '').strip()
password = request.form.get('password', '').strip()
confirm_password = request.form.get('confirm_password', '').strip()
# Validate username
if not username:
username_err = "Please enter a username."
elif not re.match(r'^[a-zA-Z0-9_]+$', username):
username_err = "Username can only contain letters, numbers, and underscores."
else:
# Check if username already exists
if User.query.filter_by(username=username).first():
username_err = "This username is already taken."
# Validate password
if not password:
password_err = "Please enter a password."
elif len(password) < 6:
password_err = "Password must have at least 6 characters."
# Validate confirm password
if not confirm_password:
confirm_password_err = "Please confirm password."
elif password != confirm_password:
confirm_password_err = "Password did not match."
# If no errors, insert new user
if not username_err and not password_err and not confirm_password_err:
hashed_password = generate_password_hash(password)
new_user = User(
username=username,
password=hashed_password,
register_time=datetime.utcnow()
)
try:
db.session.add(new_user)
db.session.commit()
flash("Registration successful! Please login.", "success")
return redirect(url_for('login.login'))
except Exception as e:
db.session.rollback()
flash("Oops! Something went wrong. Please try again.", "danger")
return render_template('register.html',
username=username,
password=password,
confirm_password=confirm_password,
username_err=username_err,
password_err=password_err,
confirm_password_err=confirm_password_err)