This commit is contained in:
2025-09-14 16:34:12 +02:00
parent 94f865665e
commit 5591a77870
3 changed files with 96 additions and 14 deletions

View File

@@ -27,6 +27,7 @@ from .auth import check_password, user_loader
from .forms import DeckForm, InfoBannerForm, LoginForm, PasswordForm
from .models import Deck, InfoBanner, Password, db
from .utils import (
create_token,
generate_password,
generate_token,
get_active_banner,
@@ -49,18 +50,6 @@ def on_connect():
if flask_login.current_user.is_authenticated:
join_room("instructor")
@main.before_request
def ensure_cookie():
token = get_token()
if token:
return
else:
token = generate_token()
resp = make_response(redirect(request.url))
resp.set_cookie('access_token', serialize_token(token), httponly=True)
return resp
@main.after_request
def inject_confused_button(response):
if True:
@@ -109,10 +98,48 @@ def inject_confused_button(response):
def index():
token = get_token()
if not token:
abort(500)
return redirect(url_for("main.register"))
else:
return render_template('index.html', active_banner=get_active_banner(), decks=get_unlocked_decks(token), user_name=token.name)
@main.route('/register', methods=['POST', 'GET'])
def register():
"""
Handles user registration.
GET: Renders the registration form.
POST: Processes the form submission.
"""
if request.method == 'POST':
# Get form data
user_name = request.form.get('username')
acknowledge = request.form.get('acknowledge')
# Simple validation
if not user_name:
flash('Username is required.', 'error')
return render_template('register.html')
if retrieve_token(user_name):
flash(f'The username "{user_name}" is already taken.', 'error')
return render_template('register.html')
if not acknowledge:
flash('You must acknowledge the important information to proceed.', 'error')
return render_template('register.html')
# If all validation passes, "register" the user
token = create_token(user_name)
print(f"User registered: {user_name}")
resp = make_response(redirect(url_for("main.index")))
resp.set_cookie('access_token', serialize_token(token), httponly=True)
flash(f'Registration successful for {user_name}!', 'success')
# Redirect to the login page after successful registration
return resp
# If GET request, render the form
return render_template('register.html')
@main.route('/login', methods=['POST', 'GET'])
def login():